1. 程式人生 > >Python3 File方法

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