python中open函數的用法


 

情形簡介:

有時我們需要把數據永久存儲起來,隨時使用隨時讀取。例如,我們通過程序建立的列表、字典等數據,當程序結束時,需要把這些數據存儲到文件中,當程序再次啟動時,可以把這些數據讀入到程序中,避免這些數據的重新錄入。要實現上面的功能,我們該怎么做呢?

要把列表、字典等數據永久存儲起來,就需要用到文件。文件一般都存儲在磁盤中,電腦中存儲的圖片、資料、音視頻等都是以文件方式存儲的,每個文件都有一個名稱,可以根據文件的名稱來選擇打開或存儲到某一文件。當計算機中的文件很多時,用戶使用起來會非常不方便,為此又引入了文件目錄,每一個目錄就是一個存儲文件的

集合,目錄下面又有子目錄,形成層級目錄。打開電腦查看盤符時,會看到盤符下面有目錄也有文件,目錄里面也有文件或目錄。

在Python語言中,負責文件操作的稱為文件對象,文件對象不僅可以訪問存儲在磁盤中的文件,也可以訪問網絡文件。文件對象通過open函數得到,獲取文件對象后,就可以使用文件對象提供的方法來讀寫文件。

應用Python提供的open函數可以返回文件對象。open函數提供了輸入/輸出操作的通用接口,open函數成功打開文件后會返回一個文件對象,打開失敗時會拋出異常IOError。

 

open函數的基本語法如下:

open(name[, mode[, buffering]])

參數說明:

  • name : 一個包含了你要訪問的文件名稱的字符串值。

  • mode : mode 決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,默認文件訪問模式為只讀(r)。

  • buffering : 如果 buffering 的值被設為 0,就不會有寄存。如果 buffering 的值取 1,訪問文件時會寄存行。如果將 buffering 的值設為大於 1 的整數,表明了這就是的寄存區的緩沖大小。如果取負值,寄存區的緩沖大小則為系統默認。

 

不同模式打開文件的完全列表:

模式 描述
t 文本模式 (默認)。
x 寫模式,新建一個文件,如果該文件已存在則會報錯。
b 二進制模式。
+ 打開一個文件進行更新(可讀可寫)。
U 通用換行模式(不推薦)。
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。一般用於非文本文件如圖片等。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。一般用於非文本文件如圖片等。
w 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
w+ 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。

 

舉些例子:

 

以w方式寫入

>>> f = open('1.txt','w')
>>> f.write('this is a test')
14
>>> f.close()
>>> g = open('1.txt','r')
>>> g.readline()
'this is a test'

 文件使用完畢后必須關閉,因為文件對象會占用操作系統的資源,並且操作系統同一時間能打開的文件數量也是有限的

 f.close()

 

 

r模式只能打開已存在的文件,當打開不存在的文件時,open函數會拋出異常。

 

 

當一個需要打開的文件名稱不帶路徑時,open函數會在Python

程序運行的當前目錄尋找該文件,在當前目錄下如果沒有找到該文件,open函數拋出異常IOError。程序輸出結果如下圖所示。

 

 

如果需要創建一個新的文件,在open函數中可以使用w+模式,用w+模式打開文件時,如果該文件不存在,則會創建該文件,而不會拋出異常。

 

 

上面的案例代碼打開D盤下的test.txt文件,如果D盤目錄下沒有test.txt文件,open函數將創建test.txt文件;若D盤目錄下有test.txt文件,open函數會打開該文件,但文件原有內容被清空。程序輸出結果如下圖所示。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM