亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python文件讀寫w+和r+區別解析

瀏覽:3日期:2022-08-01 09:37:46

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

f = open('test.txt', ’r’, encoding='utf-8') # 文件句柄f.write('we are herosn')data = f.read()print(data, type(data))f.close()

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

f = open('test.txt', ’r+’, encoding='utf-8') # 文件句柄f.write('we are herosn')data = f.read()print(data, type(data))f.close()

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

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

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

f = open('test.txt', ’r+’, encoding='utf-8') # 文件句柄 f.write('we are herosn') f.seek(0) data = f.read() print(data, type(data)) f.close()

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

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

r+:先讀后寫的話是在原有文本后添加, 因為讀完后類指針已經在最末尾了,如果是先寫后讀的話,是從頭開始覆蓋式寫(如只修改了前面的字符,后面字符是不會被刪掉的),類指針停留在寫完的末尾,不是文檔末尾,可以讀出未被覆蓋寫的部分; w+:為先寫后讀,先寫完后使用f.seek(0)回到初始位置然后開始讀,如果先讀的話是讀不出任何東西的,因為w+也是純粹的覆蓋寫,在未使用寫操作前文檔是完全空白的,無論之前該文件里有什么。so ,只能先寫后讀。 r和w的區別,r必須已經存在這個文件了而 w時文件可以有也可以沒有,if有被覆蓋,else沒有則創建一個(慎用),r+的寫也是覆蓋的!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 免费精品美女久久久久久久久 | 国产在线视频99 | 黄网站免费看 | 亚洲国产一区二区三区 | 亚洲国产精品综合久久一线 | 成人国产精品免费视频不卡 | 国产精品毛片一区 | 欧美色欧美亚洲高清在线观看 | 麻豆久久精品免费看国产 | 俺来也俺来也天天夜夜视频 | 青草免费观看 | 欧美特黄a级猛片a级 | 国产在线视频h | 亚洲视频精品在线观看 | 欧美人在线视频 | 欧美性生大片免费观看 | 日韩欧美亚洲国产一区二区三区 | 麻豆视传媒短视频网站-欢迎您 | 在线观看免费黄色网址 | 亚洲第一视频 | 精品国产欧美一区二区三区成人 | 成人性生交大片免费看软件 | 国产精品精品国产一区二区 | 国产淫视频 | 黄色三级三级三级免费看 | 欧美日韩中文一区 | 日韩欧美中文字幕在线播放 | 成人影院欧美大片免费看 | 在线观看国产免费高清不卡 | 日本一级成人毛片免费观看 | 免费色视频 | 国产精品亚洲片在线va | 中国一级免费毛片 | 丁香综合激情 | 亚洲男人的天堂久久香蕉 | 日韩a一级欧美一级 | 一二三区乱码一区二区三区码 | 国产精品每日在线观看男人的天堂 | 久久久久亚洲精品美女 | 日韩欧美毛片免费看播放 | 欧美国产日韩做一线 |