欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python中文件讀寫(xiě)之w+與r+到底有啥區(qū)別?

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

創(chuàng)新互聯(lián)主營(yíng)陽(yáng)春網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開(kāi)發(fā),陽(yáng)春h5微信小程序搭建,陽(yáng)春網(wǎng)站營(yíng)銷(xiāo)推廣歡迎陽(yáng)春等地區(qū)企業(yè)咨詢(xún)

f = open("test.txt", 'r', encoding="utf-8")  # 文件句柄
f.write("we are heros\n")

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

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

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

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

你試過(guò)會(huì)發(fā)現(xiàn),什么也沒(méi)打印出來(lái),同時(shí)注意?。?!也沒(méi)有報(bào)錯(cuò)。到底是什么意思呢?

其實(shí)是由于讀寫(xiě)機(jī)制的問(wèn)題,當(dāng)一個(gè)文件被讀或者寫(xiě)一次后,文件中類(lèi)指針的東西指向的是整個(gè)文件的末尾,再次讀時(shí)從末尾開(kāi)始讀的話(huà)肯定是什么都

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

'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:579817333 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
'''
 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)使得類(lèi)指針的東西回到文件的開(kāi)頭然后從頭開(kāi)始讀即可。配合f.tell()使用,英文及字符返回的是那個(gè)類(lèi)指針的位置(也就是字符個(gè)數(shù)),但是中文的話(huà)是字符 個(gè)數(shù)*3,具體原因還得請(qǐng)大俠給講講。

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

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

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

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

網(wǎng)頁(yè)標(biāo)題:Python中文件讀寫(xiě)之w+與r+到底有啥區(qū)別?
轉(zhuǎn)載注明:http://chinadenli.net/article8/pddpop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、Google、搜索引擎優(yōu)化服務(wù)器托管、定制網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

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

外貿(mào)網(wǎng)站制作