91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中文件讀寫之 w+ 與 r+ 到底有啥區別?

發布時間:2020-06-21 12:10:08 來源:網絡 閱讀:405 作者:Python熱愛者 欄目:編程語言

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

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,不可寫應都能理解,但是變成r+呢

'''
遇到問題沒人解答?小編創建了一個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.read()兩次的話,第二次什么都不會讀到的原因是相同的。那如何寫完了接著讀呢,見代碼

'''
遇到問題沒人解答?小編創建了一個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()使用,英文及字符返回的是那個類指針的位置(也就是字符個數),但是中文的話是字符 個數*3,具體原因還得請大俠給講講。

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邻水| 宿州市| 九台市| 高要市| 鄂尔多斯市| 顺平县| 上饶市| 乌恰县| 彰化市| 浏阳市| 报价| 青川县| 岳阳市| 内黄县| 积石山| 水富县| 乌兰浩特市| 馆陶县| 获嘉县| 镇康县| 碌曲县| 历史| 师宗县| 布尔津县| 鸡东县| 商都县| 宁都县| 西丰县| 迭部县| 兴安县| 舒城县| 潼关县| 临沭县| 大城县| 宝兴县| 扬州市| 刚察县| 闽侯县| 任丘市| 宜章县| 鹤壁市|