python3 File檔案函式
以下講解python3中對檔案操作的函式
file.close()
含義:close()方法用於關閉一個已開啟的檔案,關閉後的檔案不能在進行讀寫操作。否則會觸發ValueError錯誤。
語法:file.close();
返回值:無
以下例項演示close()用法:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #關閉檔案 f.close()
#python3 test.py
The file name is: /root/dpc
如果關閉該檔案時再次讀取會報錯:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #關閉檔案 f.close() #再次讀取 f.read()
#python3 test.py
Traceback (most recent call last):
File "test.py", line 5, in <module>
f.read()
ValueError:I/O operation on closed file
file.fileno()
含義:fileno()方法返回一個整形的檔案描述符,可用於底層作業系統的 I/O 操作。
語法:file.fileno()
返回值:無
以下例項演示了fileno()用法:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #輸出檔案描述符 fd = f.fileno() print ("The FD is:",fd) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
The FD is: 3
file.istty()
含義:istty()方法檢測檔案是否連線到一個終端裝置,如果是返回 True,否則返回 False。
語法:file.istty():
返回值:連線到一個終端裝置返回 True,否則返回 False。
以下例項演示了isatty()用法:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #輸出檔案描述符 ret = f.isatty() print ("Return value:",ret) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
Return value: False
file.next()
含義:next()該方法返回檔案的下一行。
語法:next(file):
返回值:返回檔案下一行。
以下例項演示了next()用法:
檔案dpc內容如下:
我在一樓,我叫張三
我在二樓,我叫李四
我在三樓,我叫王五
讀取檔案內容:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #迴圈讀取檔案 for i in range(3): print ("number %s:" % (i),next(f)) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
number 0: 我在一樓,我叫張三number 1: 我在二樓,我叫李四
number 2: 我在三樓,我叫王五
file.read()
含義:read()方法用於從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。
語法:file.read()
返回值:返回讀取的字串
引數:size #從檔案中讀取的位元組數。
以下例項演示了 read() 方法的使用:
檔案dpc內容如下:
Python
讀取檔案內容:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #讀取指定位元組數 r = f.read(2) print ("Returns a string:",r) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
Returns a string: Py
file.readline()
含義:方法用於從檔案讀取整行,包括 "\n" 字元。如果指定了一個非負數的引數,則返回指定大小的位元組數,包括 "\n" 字元。
語法:file.readline()
引數:size #從檔案中讀取的位元組數。
以下例項演示了 readline() 方法的使用:
檔案 runoob.txt 的內容如下:
www.baidu.com
www.google.com
讀取檔案內容:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #讀取整行 r = f.readline() print ("Read the entire row:",r) #讀取指定位元組數 r = f.readline(10) print ("Number of bytes read:",r) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
Read the entire row: www.baidu.comNumber of bytes read: www.google
file.readlines()
含義:方法用於讀取所有行(直到結束符 EOF)並返回列表,該列表可以由 Python 的 for... in ... 結構進行處理。
語法:file.readlines()
返回值:返回列表,包含所有的行。
以下例項演示了 readline() 方法的使用:
檔案 dpc 的內容如下:
www.baidu.com
www.google.com
讀取檔案內容:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #返回列表值 r = f.readlines() print ("Returns a list value:",r) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
Returns a list value: ['www.baidu.com\n', 'www.google.com\n']
用for迴圈輸出每行
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #for迴圈 for line in f.readlines(): line = line.strip() print ("Read the entire row:",line) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
Read the entire row: www.baidu.com
Read the entire row: www.google.com
file.seek()
含義:方法用於移動檔案讀取指標到指定位置。
語法:file.seek(offset,whence)
引數:offset #開始的偏移量,也就是代表需要移動偏移的位元組數
whence: #可選,預設值為 0。給offset引數一個定義,表示要從哪個位置開始偏移;0代表從檔案開頭開始算起,1代表從當前 位置開始算起,2代表從檔案末尾算起。
以下例項演示了 readline() 方法的使用:
檔案 dpc 的內容如下:
www.baidu.com
www.google.com
讀取檔案內容:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #讀取整行 r = f.readline() print ("String:",r) #設定檔案讀取指標 f.seek(14,0) r = f.readline() print ("String:",r) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
String: www.baidu.comString: www.google.com
file.tell()
含義:方法返回檔案的當前位置,即檔案指標當前位置。
語法:file.tell()
返回值:返回檔案的當前位置。
以下例項演示了 tell() 方法的使用:
檔案 dpc 的內容如下:
www.baidu.com
www.google.com
讀取檔案內容:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #讀取整行 r = f.readline() print ("String:",r) #當前位置 pos = f.tell() print ("current location:",pos) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
String: www.baidu.comcurrent location: 14
file.truncate()
含義:方法用於從檔案的首行首字元開始截斷,截斷檔案為 size 個字元,無 size 表示從當前位置截斷;無 size 表示從當前位置截斷;
語法:file.truncate(size)
引數:size #可選,如果存在則檔案截斷為 size 位元組。
以下例項演示了 truncate() 方法的使用:
檔案 runoob.txt 的內容如下:
Python
讀取檔案內容:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #截斷字串 f.truncate(2) str = f.read() print ("Read data: %s" % (str)) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpc
Read data: Py
file.write()
含義:方法用於向檔案中寫入指定字串。
在檔案關閉前或緩衝區重新整理前,字串內容儲存在緩衝區中,這時你在檔案中是看不到寫入的內容的。如果檔案開啟模式帶 b,那 寫入檔案內容時,str (引數)要用 encode 方法轉為 bytes 形式,否則報錯:TypeError: a bytes-like object is required, not 'str'。
語法:file.write(str)
引數: str #要寫入檔案的字串
返回值:返回的是寫入的字元長度。
以下例項演示了 tell() 方法的使用:
檔案 dpc 的內容如下:
www.baidu.com
www.google.com
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #輸出檔名 print ("The file name is:",f.name) #在檔案末尾寫入一行 f.seek(0, 2) line = f.write( str ) #讀取檔案所有內容 f.seek(0,0) for index in range(3): line = next(f) print ("Number %d - %s" % (index, line)) #關閉檔案 f.close()
# python3 test.py
The file name is: /root/dpcNumber 0 - www.baidu.com
Number 1 - www.google.com
Number 2 - www.runoob.com
file.writelines()
含義:方法用於向檔案中寫入一序列的字串。這一序列字串可以是由迭代物件產生的,如一個字串列表。換行需要制定換行符 \n。
語法:file.wrttelines(str)
引數:str #要寫入檔案的字串序列。
以下例項演示了 writelines() 方法的使用:
#!/usr/bin/python3 #開啟檔案 f = open("/root/dpc","r") #寫入資料 seq = ['www.baidu.com \n','www.google.com \n'] f.writelines(seq) #關閉檔案 f.close()
# python3 test.py
檢視檔案內容:
# cat /root/dpc
www.baidu.com
www.google.com