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()
(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()
(str)
#關閉開啟的檔案
f.close()
f.write(string) 將 string 寫入到檔案中, 然後返回寫入的字元數。
#!/usr/bin/python3
#開啟乙個檔案
f = open("
/tmp/foo.txt
", "w"
)num = f.write( "
python 是乙個非常好的語言")
(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 檔名,可...