python讀寫文件write和flush
打開文件用open,該函數創建一個文件對象,這將用來調用與之關聯的其他支持方式。
file object = open(file_name [, access_mode][, buffering])
下面是參數的詳細信息:
-
file_name: file_name參數是一個字符串值,包含您要訪問的文件的名稱。
-
access_mode: access_mode決定了文件必須被打開,即,讀,寫,追加等的可能值是下表中給定的一個完整的列表的模式。這是可選參數,默認文件存取方式為read (r)。
-
buffering: 如果緩沖值被設置為0時,沒有緩沖將發生。如果該緩沖值是1,行緩沖會在訪問一個文件來執行。如果指定的緩沖值為大於1的整數,則緩沖作用將與所指示的緩沖區的大小進行。如果為負,則緩沖區的大小是系統默認(默認行為)。
這裏是打開一個文件的??不同模式的列表:
模式 | 描述 |
---|---|
r | 打開一個文件為只讀。文件指針置於該文件的開頭。這是默認模式。 |
rb | 打開一個文件只能以二進制格式讀取。文件指針置於該文件的開頭。這是默認模式。 |
r+ | 打開用於讀取和寫入文件。文件指針將會在文件的開頭。 |
rb+ | 打開用於讀取和寫入二進制格式的文件。文件指針將會在文件的開頭。 |
w | 打開一個文件只寫。覆蓋該文件,如果該文件存在。如果該文件不存在,則創建用於寫入一個新的文件。 |
wb | 打開一個文件只能以二進制格式寫入。覆蓋該文件,如果該文件存在。如果該文件不存在,則創建用於寫入一個新的文件。 |
w+ | 打開用於寫入和讀取的文件。覆蓋現有的文件,如果文件存在。如果該文件不存在,則創建讀取和寫入新的文件。 |
wb+ | 打開用於寫入和讀取的二進制格式的文件。覆蓋現有的文件,如果文件存在。如果該文件不存在,則創建讀取和寫入新的文件。 |
a | 將打開追加文件。文件指針是在文件的結尾。也就是說,該文件是在附加模式。如果該文件不存在,它創造了寫入一個新的文件。 |
ab | 將打開追加的二進制格式的文件。文件指針在該文件的結束。也就是說,該文件為追加模式。如果該文件不存在,它創建並寫入一個新的文件。 |
a+ | 打開為追加和讀取文件。文件指針在該文件的結束。該文件將為追加模式。如果該文件不存在,它創建並讀取和寫入的新文件。 |
ab+ | 打開兩個追加和讀取的二進制格式的文件。文件指針在該文件的結束。該文件將在追加模式。如果該文件不存在,它創建並讀取和寫入的新文件。 |
關閉文件用close:
一個文件對象的close()方法刷新未寫入的信息,並關閉該文件的對象,在這之後沒有數據內容可以執行寫入。
寫入文件用write:
write()方法寫入字符串到任何一個打開的文件。要註意的是Python字符串可以具有二進制數據,而不僅僅是文字。
讀取文件用read:
read()方法讀取一個打開的文件的字符串。要註意的是Python字符串可以具有二進制數據,而不僅僅是文本。
需要註意的是:由於緩沖,字符串可能實際上沒有出現在該文件中,直到調用flush()或close()方法被調用.
一般的文件流操作都包含緩沖機制,write方法並不直接將數據寫入文件,而是先寫入內存中特定的緩沖區。
flush方法是用來刷新緩沖區的,即將緩沖區中的數據立刻寫入文件,同時清空緩沖區。
正常情況下緩沖區滿時,操作系統會自動將緩沖數據寫入到文件中。
至於close方法,原理是內部先調用flush方法來刷新緩沖區,再執行關閉操作,這樣即使緩沖區數據未滿也能保證數據的完整性。
如果進程意外退出或正常退出時而未執行文件的close方法,緩沖區中的內容將會丟失。
python讀寫文件write和flush