詳解python中各種文件打開(kāi)模式
在python中,總的來(lái)說(shuō)有三種大的模式打開(kāi)文件,分別是:a, w, r
當(dāng)以a模式打開(kāi)時(shí),只能寫(xiě)文件,而且是在文件末尾添加內(nèi)容。
當(dāng)以a+模式打開(kāi)時(shí),可以寫(xiě)文件,也可讀文件,可是在讀文件的時(shí)候,會(huì)發(fā)現(xiàn)讀出來(lái)的數(shù)據(jù)為空,是因?yàn)閍+模式是在文件末尾添加內(nèi)容,所以其指針已經(jīng)指到了文件末尾,所以讀出來(lái)的數(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模式打開(kāi)時(shí),只能寫(xiě)文件,而且會(huì)直接將之前的數(shù)據(jù)給丟失。
當(dāng)以w+模式,可讀可寫(xiě),但是如果想讀取的內(nèi)容的話,只能在寫(xiě)內(nèi)容的時(shí)候,同時(shí)讀取其中的內(nèi)容,相當(dāng)于只能讀取出你剛剛寫(xiě)入的內(nèi)容,沒(méi)有意義
f = open('test.txt', 'w+') f.write('我不會(huì)喜歡你') f.seek(0) print(f.read()) f.close()
當(dāng)以r模式打開(kāi)文件時(shí),只能讀取文件。
當(dāng)以r+模式打開(kāi)文件時(shí),可讀可寫(xiě)文件。如果是讀取文件,會(huì)從首個(gè)字符開(kāi)始讀取數(shù)據(jù),如果是以該模式打開(kāi)文件,就寫(xiě)數(shù)據(jù),則會(huì)從首個(gè)字符開(kāi)始寫(xiě),并一個(gè)一個(gè)字符的向后面覆蓋。如果想從末尾添加內(nèi)容,則可先read()然后在向其中添加數(shù)據(jù)。
# 第一次寫(xiě)入內(nèi)容 f = open('test.txt', 'r+') f.write('我不會(huì)喜歡你') # 內(nèi)容為:我不會(huì)喜歡你 f.close() # 第二次寫(xiě)入 f = open('test.txt', 'r+') f.write('其實(shí)我') f.close() # 內(nèi)容為: 其實(shí)我喜歡你 # 第三次寫(xiě)入 f = open('test.txt', 'r+') print(f.read()) # 內(nèi)容為: 其實(shí)我喜歡你 f.write(', I love you') f.close() # 內(nèi)容為: 其實(shí)我喜歡你, I love you
自我感覺(jué)r+模式可以多加應(yīng)用。
ps:下面看下python文件打開(kāi)的幾種訪問(wèn)模式
訪問(wèn)模式 | 說(shuō)明 |
---|---|
r | 以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。 |
w | 打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
a | 打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。 |
rb | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。 |
wb | 以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
ab | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。 |
r+ | 打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。 |
w+ | 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
a+ | 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。 |
rb+ | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。 |
wb+ | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
ab+ | 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。 |
總結(jié)
以上所述是小編給大家介紹的python中各種文件打開(kāi)模式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
python同時(shí)遍歷數(shù)組的索引和值的實(shí)例
今天小編就為大家分享一篇python同時(shí)遍歷數(shù)組的索引和值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Python用20行代碼實(shí)現(xiàn)完整郵件功能
這篇文章主要介紹了如何使用Python實(shí)現(xiàn)完整郵件功能的相關(guān)資料,需要的朋友可以參考下面文章內(nèi)容,希望能幫助到您2021-09-09Flask如何獲取用戶的ip,查詢用戶的登錄次數(shù),并且封ip
這篇文章主要介紹了Flask如何獲取用戶的ip,查詢用戶的登錄次數(shù),并且封ip問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Python 處理數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了Python 處理數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,這里主要介紹Python 常用的基礎(chǔ)知識(shí)并附實(shí)例,需要的朋友可以參考下2017-08-08實(shí)現(xiàn)python?namedtuple元類編程
這篇文章主要為大家介紹了實(shí)現(xiàn)python?namedtuple元類編程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07flask+pymysql實(shí)現(xiàn)Web端操作數(shù)據(jù)庫(kù)的項(xiàng)目實(shí)踐
本文主要介紹了flask+pymysql實(shí)現(xiàn)Web端操作數(shù)據(jù)庫(kù)的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06