Python操作檔案

2022-06-13 16:24:11 字數 3909 閱讀 3009

python 的 open() 方法用於開啟乙個檔案,該方法返回乙個檔案物件,在對檔案進行處理過程都需要使用到這個函式,如果該檔案無法被開啟,會丟擲 oserror。注意:使用 open() 方法後一定要保證關閉檔案物件,即呼叫 close() 方法。

open() 函式常用形式是接收兩個引數:檔案路徑(file)和模式(mode)。

fileobject = open(filepath, mode='

r')

完整的語法格式為:

open(filepath, mode='

r', buffering=-1, encoding=none, errors=none, newline=none, closefd=true, opener=none)

引數說明:

opne()的第乙個引數是路徑+檔名,第二個引數是mode檔案開啟模式,該引數設定對檔案進行什麼模式的操作,可能是唯讀、只寫或者讀寫。如果我們設定了唯讀,就不能寫,類似的只寫也是,但也可以設定讀寫。

常見的 mode 開啟模式的值:

mode描述r

唯讀。待開啟檔案必須存在,檔案的指標將會放在檔案的開頭。(預設模式)

w只寫(重寫)。如果待開啟檔案已存在,會先清空該檔案的已有內容,不存在則新建立乙個

a只寫(追加)。如果該檔案已存在,檔案指標將會放在檔案的結尾,新的內容將會被寫入到已有內容之後。如果該檔案不存在,則建立新檔案進行寫入。

r+讀寫,檔案必須存在

w+讀寫,如果待開啟檔案已存在,會先清空,不存在則建立

a+讀寫,如果檔案已存在,不會清空,接著往後追加

不同模式開啟檔案的完全列表:

t文字模式 (預設)

b二進位制模式

+開啟乙個檔案進行更新(可讀可寫)

r以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

rb以二進位制格式開啟乙個檔案用於唯讀。檔案指標將會放在檔案的開頭。

r+開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

rb+以二進位制格式開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

w開啟乙個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。

wb以二進位制格式開啟乙個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。

w+開啟乙個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。

wb+以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。

a開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

ab以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

a+開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。

ab+以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

我們可以使用 f.read(size) 來讀取檔案內容。

size 是乙個可選的數字型別的引數。 當 size 被忽略了或者為負,那麼將讀取該檔案的所有內容。如果指定了 size,那麼只讀取指定的位元組數內容。該方法返回乙個字串物件,如果是乙個檔案或者音訊檔案等將返回乙個位元組物件。

以下例項假定檔案 foo.txt 已存在(上面例項中已建立):

#

!/usr/bin/python3

#開啟乙個檔案

f = open("

/tmp/foo.txt

", "r"

)str =f.read()

print

(str)

#關閉開啟的檔案

f.close()

f.readline() 會從檔案中讀取單獨的一行。換行符為 '\n'。f.readline() 如果返回乙個空字串, 說明已經已經讀取到最後一行。

#

!/usr/bin/python3

f = open("

/pythontab/code.txt

") #

返回乙個檔案物件

line = f.readline() #

呼叫檔案的 readline()方法

while

line:

print(line, end = '') #

在 python 3中使用

line =f.readline()

f.close()

我們也可以迭代乙個檔案物件來讀取每行的內容:

#

!/usr/bin/python3

#開啟乙個檔案

f = open("

/tmp/foo.txt

", "r"

)for line in

f:

print(line, end='')#

關閉開啟的檔案

f.close()

f.readlines() 將返回該檔案中包含的所有行,該方法返回乙個列表 list。

如果設定可選引數 sizehint, 則讀取指定長度的位元組, 並且將這些位元組按行分割。

#

!/usr/bin/python3

#開啟乙個檔案

f = open("

/tmp/foo.txt

", "r"

)str =f.readlines()

print

(str)

#關閉開啟的檔案

f.close()

f.write(string) 將 string 寫入到檔案中, 然後返回寫入的字元數。

#

!/usr/bin/python3

#開啟乙個檔案

f = open("

/tmp/foo.txt

", "w"

)num = f.write( "

python 是乙個非常好的語言")

print

(num)

#關閉開啟的檔案

f.close()

實際上,在我們使用 write() 方法時並不是立即寫入的,而是會先放到記憶體的快取區,等到快取區滿了之後再寫入,當然我們也可以使用 flush() 方法將快取區的內容立即寫入到檔案當中。在我們呼叫 close() 方法時,python會自動將此時在緩衝區的內容輸出到需要寫入的檔案當中,並且儲存。

當你處理完乙個檔案後, 呼叫 f.close() 來關閉檔案並釋放系統的資源。

關閉後如果再嘗試呼叫該檔案,則會丟擲異常。

f.close()

f.read()

#關閉後再讀取將報錯:

#traceback (most recent call last):

#file "", line 1, in ?

#valueerror: i/o operation on closed file

當處理乙個檔案物件時, 使用 with 關鍵字是非常好的方式。在結束後, 它會幫你正確的關閉檔案。 而且寫起來也比 try - finally 語句塊要簡短:

with open('

/tmp/foo.txt

', 'r'

) as f:

... read_data = f.read()

Python 操作檔案

字元 含義 r 以唯讀方式開啟 預設 w 以只寫方式開啟,刪除原有檔案內容 如果檔案不存在,則建立該檔案並以只寫方式開啟 x 建立乙個新檔案,並以寫模式開啟這個檔案,如果檔案存在則會產生 fileexistserror 錯誤 a 以只寫檔案開啟乙個檔案,如果有原檔案則追加到檔案末尾 b 用二進位制模...

Python 操作檔案

今天,我們來學習python開啟,修改檔案的方法。先在專案資料夾下新建兩個檔案 text1.txt和text2.txt,在text2中寫入 i like python.換行 it is fun.換行 下面我們用這兩個檔案探索操作檔案的方法。如何在python中開啟乙個檔案物件呢?with open ...

python操作檔案

讀寫檔案前,我們先必須了解一下,在磁碟上讀寫檔案的功能都是由作業系統提供的,現代作業系統不允許普通的程式直接操作磁碟,所以,讀寫檔案就是請求作業系統開啟乙個檔案物件 通常稱為檔案描述符 然後,通過作業系統提供的介面從這個檔案物件中讀取資料 讀檔案 或者把資料寫入這個檔案物件 寫檔案 引數1 檔名,可...