Python3 File方法
file 物件使用 open 函式來建立,下表列出了 file 物件常用的函式:
序號 | 方法及描述 |
---|---|
1 | file.close() 關閉檔案。關閉後文件不能再進行讀寫操作。 |
2 | file.flush() 重新整理檔案內部緩衝,直接把內部緩衝區的資料立刻寫入檔案, 而不是被動的等待輸出緩衝區寫入。 |
3 | file.fileno() 返回一個整型的檔案描述符(file descriptor FD 整型), 可以用在如os模組的read方法等一些底層操作上。 |
4 | file.isatty() 如果檔案連線到一個終端裝置返回 True,否則返回 False。 |
5 | file.next() 返回檔案下一行。 |
6 | file.read([size]) 從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。 |
7 | file.readline([size]) 讀取整行,包括 “\n” 字元。 |
8 | file.readlines([sizeint]) 讀取所有行並返回列表,若給定sizeint>0,返回總和大約為sizeint位元組的行, 實際讀取值可能比 sizeint 較大, 因為需要填充緩衝區。 |
9 | file.seek(offset[, whence]) 設定檔案當前位置 |
10 | file.tell() 返回檔案當前位置。 |
11 | file.truncate([size]) 從檔案的首行首字元開始截斷,截斷檔案為 size 個字元,無 size 表示從當前位置截斷;截斷之後 V 後面的所有字元被刪除,其中 Widnows 系統下的換行代表2個字元大小。 |
12 | file.write(str) 將字串寫入檔案,沒有返回值。 |
13 | file.writelines(sequence) 向檔案寫入一個序列字串列表,如果需要換行則要自己加入每行的換行符。 |
1.Python3 File close() 方法
概述
close() 方法用於關閉一個已開啟的檔案。關閉後的檔案不能再進行讀寫操作, 否則會觸發 ValueError 錯誤。 close() 方法允許呼叫多次。
當 file 物件,被引用到操作另外一個檔案時,Python 會自動關閉之前的 file 物件。 使用 close() 方法關閉檔案是一個好的習慣。
語法
close() 方法語法如下:
fileObject.close();
引數
- 無
返回值
該方法沒有返回值。
例項
以下例項演示了 close() 方法的使用:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "wb")
print("檔名為: ", fo.name)
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
2.Python3 File flush() 方法
概述
flush() 方法是用來重新整理緩衝區的,即將緩衝區中的資料立刻寫入檔案,同時清空緩衝區,不需要是被動的等待輸出緩衝區寫入。
一般情況下,檔案關閉後會自動重新整理緩衝區,但有時你需要在關閉前重新整理它,這時就可以使用 flush() 方法。
語法
flush() 方法語法如下:
fileObject.flush();
引數
- 無
返回值
該方法沒有返回值。
例項
以下例項演示了 flush() 方法的使用:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "wb")
print ("檔名為: ", fo.name)
# 重新整理緩衝區
fo.flush()
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
3.Python3 File fileno() 方法
概述
fileno() 方法返回一個整型的檔案描述符(file descriptor FD 整型),可用於底層作業系統的 I/O 操作。
語法
fileno() 方法語法如下:
fileObject.fileno();
引數
- 無
返回值
返回檔案描述符。
例項
以下例項演示了 fileno() 方法的使用:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "wb")
print ("檔名為: ", fo.name)
fid = fo.fileno()
print ("檔案描述符為: ", fid)
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
檔案描述符為: 3
4.Python3 File isatty() 方法
概述
isatty() 方法檢測檔案是否連線到一個終端裝置,如果是返回 True,否則返回 False。
語法
isatty() 方法語法如下:
fileObject.isatty();
引數
- 無
返回值
如果連線到一個終端裝置返回 True,否則返回 False。
例項
以下例項演示了 isatty() 方法的使用:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "wb")
print ("檔名為: ", fo.name)
ret = fo.isatty()
print ("返回值 : ", ret)
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
返回值 : False
5.Python3 File next() 方法
概述
Python 3 中的 File 物件不支援 next() 方法。 Python 3 的內建函式 next() 通過迭代器呼叫 next() 方法返回下一項。 在迴圈中,next()方法會在每次迴圈中呼叫,該方法返回檔案的下一行,如果到達結尾(EOF),則觸發 StopIteration
語法
next() 方法語法如下:
next(iterator[,default])
引數
- 無
返回值
返回檔案下一行。
例項
以下例項演示了 next() 方法的使用:
檔案 runoob.txt 的內容如下:
這是第一行
這是第二行
這是第三行
這是第四行
這是第五行
迴圈讀取檔案的內容:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "r")
print ("檔名為: ", fo.name)
for index in range(5):
line = next(fo)
print ("第 %d 行 - %s" % (index, line))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
第 0 行 - 這是第一行
第 1 行 - 這是第二行
第 2 行 - 這是第三行
第 3 行 - 這是第四行
第 4 行 - 這是第五行
6.Python3 File read() 方法
概述
read() 方法用於從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。
語法
read() 方法語法如下:
fileObject.read();
引數
- size – 從檔案中讀取的位元組數。
返回值
返回從字串中讀取的位元組。
例項
以下例項演示了 read() 方法的使用:
檔案 runoob.txt 的內容如下:
這是第一行
這是第二行
這是第三行
這是第四行
這是第五行
迴圈讀取檔案的內容:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "r+")
print ("檔名為: ", fo.name)
line = fo.read(10)
print ("讀取的字串: %s" % (line))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
讀取的字串: 這是第一行
這是第二
7.Python3 File readline() 方法
概述
readline() 方法用於從檔案讀取整行,包括 “\n” 字元。如果指定了一個非負數的引數,則返回指定大小的位元組數,包括 “\n” 字元。
語法
readline() 方法語法如下:
fileObject.readline();
引數
- size – 從檔案中讀取的位元組數。
返回值
返回從字串中讀取的位元組。
例項
以下例項演示了 readline() 方法的使用:
檔案 runoob.txt 的內容如下:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
迴圈讀取檔案的內容:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 開啟檔案
fo = open("runoob.txt", "r+")
print ("檔名為: ", fo.name)
line = fo.readline()
print ("讀取第一行 %s" % (line))
line = fo.readline(5)
print ("讀取的字串為: %s" % (line))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
讀取第一行 1:www.runoob.com
讀取的字串為: 2:www
8.Python3 File readlines() 方法
概述
readlines() 方法用於讀取所有行(直到結束符 EOF)並返回列表,該列表可以由 Python 的 for… in … 結構進行處理。 如果碰到結束符 EOF 則返回空字串。
如果碰到結束符 EOF 則返回空字串。
語法
readlines() 方法語法如下:
fileObject.readlines( );
引數
- 無。
返回值
返回列表,包含所有的行。
例項
以下例項演示了 readline() 方法的使用:
檔案 runoob.txt 的內容如下:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
迴圈讀取檔案的內容:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "r")
print ("檔名為: ", fo.name)
for line in fo.readlines(): #依次讀取每行
line = line.strip() #去掉每行頭尾空白
print ("讀取的資料為: %s" % (line))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
讀取的資料為: 1:www.runoob.com
讀取的資料為: 2:www.runoob.com
讀取的資料為: 3:www.runoob.com
讀取的資料為: 4:www.runoob.com
讀取的資料為: 5:www.runoob.com
9.Python3 File seek() 方法
概述
seek() 方法用於移動檔案讀取指標到指定位置。
語法
seek() 方法語法如下:
fileObject.seek(offset[, whence])
引數
offset – 開始的偏移量,也就是代表需要移動偏移的位元組數
whence:可選,預設值為 0。給offset引數一個定義,表示要從哪個位置開始偏移;0代表從檔案開頭開始算起,1代表從當前位置開始算起,2代表從檔案末尾算起。
返回值
該函式沒有返回值。
例項
以下例項演示了 readline() 方法的使用:
檔案 runoob.txt 的內容如下:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
迴圈讀取檔案的內容:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "r+")
print ("檔名為: ", fo.name)
line = fo.readline()
print ("讀取的資料為: %s" % (line))
# 重新設定檔案讀取指標到開頭
fo.seek(0, 0)
line = fo.readline()
print ("讀取的資料為: %s" % (line))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
讀取的資料為: 1:www.runoob.com
讀取的資料為: 1:www.runoob.com
10.Python3 File tell() 方法
概述
tell() 方法返回檔案的當前位置,即檔案指標當前位置。
語法
tell() 方法語法如下:
fileObject.tell(offset[, whence])
引數
- 無
返回值
返回檔案的當前位置。
例項
以下例項演示了 tell() 方法的使用:
檔案 runoob.txt 的內容如下:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
迴圈讀取檔案的內容:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "r+")
print ("檔名為: ", fo.name)
line = fo.readline()
print ("讀取的資料為: %s" % (line))
# 獲取當前檔案位置
pos = fo.tell()
print ("當前位置: %d" % (pos))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
讀取的資料為: 1:www.runoob.com
當前位置: 17
11.Python3 File truncate() 方法
概述
truncate() 方法用於從檔案的首行首字元開始截斷,截斷檔案為 size 個字元,無 size 表示從當前位置截斷;截斷之後 V 後面的所有字元被刪除,其中 Widnows 系統下的換行代表2個字元大小。 。
語法
truncate() 方法語法如下:
fileObject.truncate( [ size ])
引數
- size – 可選,如果存在則檔案截斷為 size 位元組。
返回值
該方法沒有返回值。
例項
以下例項演示了 truncate() 方法的使用:
檔案 runoob.txt 的內容如下:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
迴圈讀取檔案的內容:
#!/usr/bin/python3
fo = open("runoob.txt", "r+")
print ("檔名: ", fo.name)
line = fo.readline()
print ("讀取行: %s" % (line))
fo.truncate()
line = fo.readlines()
print ("讀取行: %s" % (line))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名: runoob.txt
讀取行: 1:www.runoob.com
讀取行: ['2:www.runoob.com\n', '3:www.runoob.com\n', '4:www.runoob.com\n', '5:www.runoob.com\n']
以下例項擷取 runoob.txt 檔案的10個位元組:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "r+")
print ("檔名為: ", fo.name)
# 擷取10個位元組
fo.truncate(10)
str = fo.read()
print ("讀取資料: %s" % (str))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: runoob.txt
讀取資料: 1:www.runo
12.Python3 File write() 方法
概述
write() 方法用於向檔案中寫入指定字串。
在檔案關閉前或緩衝區重新整理前,字串內容儲存在緩衝區中,這時你在檔案中是看不到寫入的內容的。
語法
write() 方法語法如下:
fileObject.write( [ str ])
引數
- str – 要寫入檔案的字串。
返回值
該方法沒有返回值。
例項
檔案 runoob.txt 的內容如下:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
以下例項演示了 write() 方法的使用:
#!/usr/bin/python3
# 開啟檔案
fo = open("runoob.txt", "r+")
print ("檔名: ", fo.name)
str = "6:www.runoob.com"
# 在檔案末尾寫入一行
fo.seek(0, 2)
line = fo.write( str )
# 讀取檔案所有內容
fo.seek(0,0)
for index in range(6):
line = next(fo)
print ("檔案行號 %d - %s" % (index, line))
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔案行號 0 - 1:www.runoob.com
檔案行號 1 - 2:www.runoob.com
檔案行號 2 - 3:www.runoob.com
檔案行號 3 - 4:www.runoob.com
檔案行號 4 - 5:www.runoob.com
檔案行號 5 - 6:www.runoob.com
檢視檔案內容:
$ cat runoob.txt
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
6:www.runoob.com
13.Python3 File writelines() 方法
概述
writelines() 方法用於向檔案中寫入一序列的字串。
這一序列字串可以是由迭代物件產生的,如一個字串列表。
換行需要制定換行符 \n。
語法
writelines() 方法語法如下:
fileObject.writelines( [ str ])
引數
- str – 要寫入檔案的字串序列。
返回值
該方法沒有返回值。
例項
以下例項演示了 writelines() 方法的使用:
#!/usr/bin/python3
# 開啟檔案
fo = open("test.txt", "w")
print ("檔名為: ", fo.name)
seq = ["菜鳥教程 1\n", "菜鳥教程 2"]
fo.writelines( seq )
# 關閉檔案
fo.close()
以上例項輸出結果為:
檔名為: test.txt
檢視檔案內容:
$ cat test.txt
菜鳥教程 1
菜鳥教程 2