詳解python中各種文件打開模式
在python中,總的來說有三種大的模式打開文件,分別是:a, w, r
當(dāng)以a模式打開時(shí),只能寫文件,而且是在文件末尾添加內(nèi)容。
當(dāng)以a+模式打開時(shí),可以寫文件,也可讀文件,可是在讀文件的時(shí)候,會(huì)發(fā)現(xiàn)讀出來的數(shù)據(jù)為空,是因?yàn)閍+模式是在文件末尾添加內(nèi)容,所以其指針已經(jīng)指到了文件末尾,所以讀出來的數(shù)據(jù)就是空的。
# 在文件末尾添加數(shù)據(jù)
f = open('test.txt','a+')
f.write('test')
f.close()
# 讀出數(shù)據(jù)為空
f = open('test.txt','a+')
print(f.read())
# 讀出數(shù)據(jù)
f = open('test.txt','a+')
f.seek(0) # 將指針移動(dòng)到首個(gè)字符前
print(f.read())
當(dāng)以w模式打開時(shí),只能寫文件,而且會(huì)直接將之前的數(shù)據(jù)給丟失。
當(dāng)以w+模式,可讀可寫,但是如果想讀取的內(nèi)容的話,只能在寫內(nèi)容的時(shí)候,同時(shí)讀取其中的內(nèi)容,相當(dāng)于只能讀取出你剛剛寫入的內(nèi)容,沒有意義
f = open('test.txt', 'w+')
f.write('我不會(huì)喜歡你')
f.seek(0)
print(f.read())
f.close()
當(dāng)以r模式打開文件時(shí),只能讀取文件。
當(dāng)以r+模式打開文件時(shí),可讀可寫文件。如果是讀取文件,會(huì)從首個(gè)字符開始讀取數(shù)據(jù),如果是以該模式打開文件,就寫數(shù)據(jù),則會(huì)從首個(gè)字符開始寫,并一個(gè)一個(gè)字符的向后面覆蓋。如果想從末尾添加內(nèi)容,則可先read()然后在向其中添加數(shù)據(jù)。
# 第一次寫入內(nèi)容
f = open('test.txt', 'r+')
f.write('我不會(huì)喜歡你') # 內(nèi)容為:我不會(huì)喜歡你
f.close()
# 第二次寫入
f = open('test.txt', 'r+')
f.write('其實(shí)我')
f.close() # 內(nèi)容為: 其實(shí)我喜歡你
# 第三次寫入
f = open('test.txt', 'r+')
print(f.read()) # 內(nèi)容為: 其實(shí)我喜歡你
f.write(', I love you')
f.close() # 內(nèi)容為: 其實(shí)我喜歡你, I love you
自我感覺r+模式可以多加應(yīng)用。
ps:下面看下python文件打開的幾種訪問模式
| 訪問模式 | 說明 |
|---|---|
| r | 以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是默認(rèn)模式。 |
| w | 打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
| a | 打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
| rb | 以二進(jìn)制格式打開一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開頭。這是默認(rèn)模式。 |
| wb | 以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
| ab | 以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
| r+ | 打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。 |
| w+ | 打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
| a+ | 打開一個(gè)文件用于讀寫。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。 |
| rb+ | 以二進(jìn)制格式打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。 |
| wb+ | 以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
| ab+ | 以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。 |
總結(jié)
以上所述是小編給大家介紹的python中各種文件打開模式,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
python通過imaplib模塊讀取gmail里郵件的方法
這篇文章主要介紹了python通過imaplib模塊讀取gmail里郵件的方法,涉及Python操作imaplib模塊操作郵件的相關(guān)技巧,需要的朋友可以參考下2015-05-05
python數(shù)據(jù)擬合之scipy.optimize.curve_fit解讀
這篇文章主要介紹了python數(shù)據(jù)擬合之scipy.optimize.curve_fit解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Python學(xué)習(xí)之12個(gè)常用基礎(chǔ)語法詳解
這篇文章主要為大家介紹了12個(gè)Python小案例,包含了日常開發(fā)中非常實(shí)用的語法,快來跟隨小編一起學(xué)習(xí)一下,看看自己都會(huì)多少個(gè)呢2022-02-02
python實(shí)現(xiàn)簡單加密解密機(jī)制
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單加密解密機(jī)制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
Python數(shù)據(jù)處理Pandas庫的使用詳解
Python使用multiprocessing實(shí)現(xiàn)一個(gè)最簡單的分布式作業(yè)調(diào)度系統(tǒng)
對(duì)Tensorflow中權(quán)值和feature map的可視化詳解
python實(shí)現(xiàn)無人機(jī)航拍圖片像素坐標(biāo)轉(zhuǎn)世界坐標(biāo)的示例代碼

