Python 中檔案讀寫之 w 與 r 有什麼區別?

時間 2022-01-21 10:21:30

1樓:teeson

w+是開啟後,先清空檔案內容,成為空檔案,然後對該空檔案具有讀寫許可權

r+是開啟後,可以讀取檔案內容,儲存原有內容,追加新內容

2樓:BoyDZQ

r:表示檔案只可讀,此時向檔案中寫入內容會報錯:io.UnsupportedOperation: not writable;

w:表示檔案只可寫,此時讀取檔案內容會報錯:io.UnsupportedOperation: not readable;

r+:表示檔案既可讀,也可寫,如果檔案不存在則報錯:FileNotFoundError;如果檔案存在,每次開啟檔案時,從檔案起始位置開始讀寫,寫的時候會覆蓋原有內容,未覆蓋部分保留

w+:表示檔案既可讀,也可寫,如果檔案不存在,不會報錯,而是自動建立乙個檔案;如果檔案存在,每次開啟檔案時,會清空原有內容

下面通過幾個例子詳細說明,首先準備兩個檔案 text_1.txt 和 text_2.txt,檔案內容一樣,都是「Hello,this is a test file!」

(1)讀寫乙個不存在的檔案時,w+ 與 r+ 的區別:

with

open

("text.txt"

,mode

="r+"

,encoding

="utf-8")as

fp:print(fp

.write

("test!"

))此時執行結果為:

with open("text.txt", mode="w+", encoding="utf-8") as fp:

print(fp.write("test!"))

此時執行結果為:

這裡的5表示寫入的字元數,並且在當前目錄下生成了乙個test.txt檔案。

(2)讀取乙個已存在的檔案時,w+ 與 r+ 的區別:

with

open

("text_1.txt"

,mode

="r+"

,encoding

="utf-8")as

fp:print

("r+:",fp

.read

())with

open

("text_2.txt"

,mode

="w+"

,encoding

="utf-8")as

fp:print

("w+:",fp

.read

())此時執行結果為:

通過 r+ 方式可以正常讀取檔案內容,而通過w+方式讀取的內容為空,這是因為通過w+方式開啟檔案時會清空原有檔案內容,此時開啟 text_2.txt 檔案,可發現檔案內容為空。

(3)向已有檔案中寫入內容時,w+ 與 r+ 的區別:

with

open

("text_1.txt"

,mode

="r+"

,encoding

="utf-8")as

fp:fp.

write

("Test"

)# 寫入內容fp.

seek(0

)# 回到起始位置

print

("r+:",fp

.read

())# 讀取內容

with

open

("text_2.txt"

,mode

="w+"

,encoding

="utf-8")as

fp:fp.

write

("Test"

)# 寫入內容fp.

seek(0

)# 回到起始位置

print

("w+:",fp

.read

())# 讀取內容

此時執行結果為:

r+模式寫入內容時會覆蓋原有內容,未覆蓋部分保留。w+模式會先清空原有內容,再寫入!

3樓:陳哲

這個引數決定了開啟檔案的模式:唯讀,寫入,追加等。這個引數是非強制的,預設檔案訪問模式為唯讀(r)。

with

open

('spamspam.txt'

,'w+')as

f:pass

r+ :開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

with

open

('spamspam.txt'

,'r+')as

f:pass

Python 學習手冊

Python 關於讀寫txt的問題?

上面幾個回答說的很清楚了,不需要從頭開始讀取檔案,只需要把第一次讀取的內容儲存到乙個變數中,進行判斷就可以了。如果非要說實現從頭開始讀取的檔案的話,就先a.close 再open檔案一次唄。個人感覺比較蠢的辦法 火鍋大魔王 我想你需要的不是重新讀取 tmpFile a.readlines if tm...

高中檔案丟失?

人事檔案是中中國人事管理制度的一項重要特色,它是個人身份 學歷 資歷等方面的證據,與個人工資待遇 社會勞動保障 組織關係緊密掛鉤,具有法律效用,是記載人生軌跡的重要依據。高校學生檔案則是國家人事檔案的組成部分,是大學生在校期間的生活 學習及各種社會實踐的真實歷史記錄,是大學生就業及其今後各單位選拔 ...

python中有什麼可以將資料夾中的檔案像迴圈一樣操作(比如乙個路徑abc n,n為1,2,3 )?

黃哥 方法之一 from os import listdir from os.path import isfile,join onlyfiles f for f in listdir mypath if isfile join mypath,f 方法之二 import glob files list...