Python中文件讀寫之w+與r+到底有啥區(qū)別?-創(chuàng)新互聯(lián)

其實r 是只讀,只能讀不能寫,這是很明確的,但是r+是可讀寫,變成r+后還沒太明白到底加了什么,還是照樣寫不了,有沒有這樣的體驗?zāi)?如下代碼,只讀時

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的雞澤網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
f = open("test.txt", 'r', encoding="utf-8")  # 文件句柄
f.write("we are heros\n")

data = f.read()
print(data, type(data))
f.close()

這樣的話報錯是明顯的:io.UnsupportedOperation: not writable,不可寫應(yīng)都能理解,但是變成r+呢

'''
遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:579817333 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
f = open("test.txt", 'r+', encoding="utf-8")  # 文件句柄
f.write("we are heros\n")

data = f.read()
print(data, type(data))
f.close()

你試過會發(fā)現(xiàn),什么也沒打印出來,同時注意!??!也沒有報錯。到底是什么意思呢?

其實是由于讀寫機制的問題,當一個文件被讀或者寫一次后,文件中類指針的東西指向的是整個文件的末尾,再次讀時從末尾開始讀的話肯定是什么都

讀不到了,所以會出現(xiàn)這樣的問題,和連續(xù)f.read()兩次的話,第二次什么都不會讀到的原因是相同的。那如何寫完了接著讀呢,見代碼

'''
遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:579817333 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
 f = open("test.txt", 'r+', encoding="utf-8")  # 文件句柄
 f.write("we are heros\n")
 f.seek(0)
 data = f.read()
 print(data, type(data))
 f.close()

加上f.seek(0)使得類指針的東西回到文件的開頭然后從頭開始讀即可。配合f.tell()使用,英文及字符返回的是那個類指針的位置(也就是字符個數(shù)),但是中文的話是字符 個數(shù)*3,具體原因還得請大俠給講講。

r+與w+啥區(qū)別呢,不能簡單的理解為讀寫都可,細節(jié)之處略有不同!

  • r+:先讀后寫的話是在原有文本后添加, 因為讀完后類指針已經(jīng)在最末尾了,如果是先寫后讀的話,是從頭開始覆蓋式寫(如只修改了前面的字符,后面字符是不會被刪掉的),類指針停留在寫完的末尾,不是文檔末尾,可以讀出未被覆蓋寫的部分;

  • w+:為先寫后讀,先寫完后使用f.seek(0)回到初始位置然后開始讀,如果先讀的話是讀不出任何東西的,因為w+也是純粹的覆蓋寫,在未使用寫操作前文檔是完全空白的,無論之前該文件里有什么。so ,只能先寫后讀。

r和w的區(qū)別,r必須已經(jīng)存在這個文件了而 w時文件可以有也可以沒有,if有被覆蓋,else沒有則創(chuàng)建一個(慎用),r+的寫也是覆蓋的!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站標題:Python中文件讀寫之w+與r+到底有啥區(qū)別?-創(chuàng)新互聯(lián)
標題鏈接:http://muchs.cn/article12/cshsgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、服務(wù)器托管、外貿(mào)建站、用戶體驗、自適應(yīng)網(wǎng)站建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)