溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python讀寫(xiě)文件write和flush的實(shí)現(xiàn)方式

發(fā)布時(shí)間:2020-09-22 04:20:48 來(lái)源:腳本之家 閱讀:229 作者:小陽(yáng)陽(yáng)testor 欄目:開(kāi)發(fā)技術(shù)

打開(kāi)文件用open,該函數(shù)創(chuàng)建一個(gè)文件對(duì)象,這將用來(lái)調(diào)用與之關(guān)聯(lián)的其他支持方式。

file object = open(file_name [, access_mode][, buffering])

下面是參數(shù)的詳細(xì)信息:

file_name: file_name參數(shù)是一個(gè)字符串值,包含您要訪問(wèn)的文件的名稱。

access_mode: access_mode決定了文件必須被打開(kāi),即,讀,寫(xiě),追加等的可能值是下表中給定的一個(gè)完整的列表的模式。這是可選參數(shù),默認(rèn)文件存取方式為read (r)。

buffering: 如果緩沖值被設(shè)置為0時(shí),沒(méi)有緩沖將發(fā)生。如果該緩沖值是1,行緩沖會(huì)在訪問(wèn)一個(gè)文件來(lái)執(zhí)行。如果指定的緩沖值為大于1的整數(shù),則緩沖作用將與所指示的緩沖區(qū)的大小進(jìn)行。如果為負(fù),則緩沖區(qū)的大小是系統(tǒng)默認(rèn)(默認(rèn)行為)。

這里是打開(kāi)一個(gè)文件的​​不同模式的列表:

模式 描述
r 打開(kāi)一個(gè)文件為只讀。文件指針置于該文件的開(kāi)頭。這是默認(rèn)模式。
rb 打開(kāi)一個(gè)文件只能以二進(jìn)制格式讀取。文件指針置于該文件的開(kāi)頭。這是默認(rèn)模式。
r+ 打開(kāi)用于讀取和寫(xiě)入文件。文件指針將會(huì)在文件的開(kāi)頭。
rb+ 打開(kāi)用于讀取和寫(xiě)入二進(jìn)制格式的文件。文件指針將會(huì)在文件的開(kāi)頭。
w 打開(kāi)一個(gè)文件只寫(xiě)。覆蓋該文件,如果該文件存在。如果該文件不存在,則創(chuàng)建用于寫(xiě)入一個(gè)新的文件。
wb 打開(kāi)一個(gè)文件只能以二進(jìn)制格式寫(xiě)入。覆蓋該文件,如果該文件存在。如果該文件不存在,則創(chuàng)建用于寫(xiě)入一個(gè)新的文件。
w+ 打開(kāi)用于寫(xiě)入和讀取的文件。覆蓋現(xiàn)有的文件,如果文件存在。如果該文件不存在,則創(chuàng)建讀取和寫(xiě)入新的文件。
wb+ 打開(kāi)用于寫(xiě)入和讀取的二進(jìn)制格式的文件。覆蓋現(xiàn)有的文件,如果文件存在。如果該文件不存在,則創(chuàng)建讀取和寫(xiě)入新的文件。
a 將打開(kāi)追加文件。文件指針是在文件的結(jié)尾。也就是說(shuō),該文件是在附加模式。如果該文件不存在,它創(chuàng)造了寫(xiě)入一個(gè)新的文件。
ab 將打開(kāi)追加的二進(jìn)制格式的文件。文件指針在該文件的結(jié)束。也就是說(shuō),該文件為追加模式。如果該文件不存在,它創(chuàng)建并寫(xiě)入一個(gè)新的文件。
a+ 打開(kāi)為追加和讀取文件。文件指針在該文件的結(jié)束。該文件將為追加模式。如果該文件不存在,它創(chuàng)建并讀取和寫(xiě)入的新文件。
ab+ 打開(kāi)兩個(gè)追加和讀取的二進(jìn)制格式的文件。文件指針在該文件的結(jié)束。該文件將在追加模式。如果該文件不存在,它創(chuàng)建并讀取和寫(xiě)入的新文件。

關(guān)閉文件用close:

一個(gè)文件對(duì)象的close()方法刷新未寫(xiě)入的信息,并關(guān)閉該文件的對(duì)象,在這之后沒(méi)有數(shù)據(jù)內(nèi)容可以執(zhí)行寫(xiě)入。

寫(xiě)入文件用write:

write()方法寫(xiě)入字符串到任何一個(gè)打開(kāi)的文件。要注意的是Python字符串可以具有二進(jìn)制數(shù)據(jù),而不僅僅是文字。

讀取文件用read:

read()方法讀取一個(gè)打開(kāi)的文件的字符串。要注意的是Python字符串可以具有二進(jìn)制數(shù)據(jù),而不僅僅是文本。

需要注意的是:由于緩沖,字符串可能實(shí)際上沒(méi)有出現(xiàn)在該文件中,直到調(diào)用flush()或close()方法被調(diào)用.

一般的文件流操作都包含緩沖機(jī)制,write方法并不直接將數(shù)據(jù)寫(xiě)入文件,而是先寫(xiě)入內(nèi)存中特定的緩沖區(qū)。

flush方法是用來(lái)刷新緩沖區(qū)的,即將緩沖區(qū)中的數(shù)據(jù)立刻寫(xiě)入文件,同時(shí)清空緩沖區(qū)。

正常情況下緩沖區(qū)滿時(shí),操作系統(tǒng)會(huì)自動(dòng)將緩沖數(shù)據(jù)寫(xiě)入到文件中。

至于close方法,原理是內(nèi)部先調(diào)用flush方法來(lái)刷新緩沖區(qū),再執(zhí)行關(guān)閉操作,這樣即使緩沖區(qū)數(shù)據(jù)未滿也能保證數(shù)據(jù)的完整性。

如果進(jìn)程意外退出或正常退出時(shí)而未執(zhí)行文件的close方法,緩沖區(qū)中的內(nèi)容將會(huì)丟失。

以上這篇python讀寫(xiě)文件write和flush的實(shí)現(xiàn)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI