[英]Why does file.write() add an extra string at the end?
我正在用 python (3.6) 更新文本文件,打開 r+
with open(f+'.play', 'r+') as f2:
play = f2.read()
result = manipulate(play)
print(result)
f2.seek(0, 0)
f2.write(result)
通過這樣做,我得到了一個意想不到的額外結尾部分
</soap:Envelope>ap:Envelope>
當然,額外的部分是在第一次關閉之后>
我通過這樣做解決了這個問題
with open(f+'.play', 'r+') as f2:
play = f2.read()
result = manipulate(play)
print(result)
f2.seek(0, 0)
f2.truncate()
f2.write(result)
在這種情況下,寫入按我的預期工作。
不過我不明白為什么我需要截斷,seek(0,0) 還不夠嗎? 因為在我看來,seek(0) + write 應該以適當的方式覆蓋整個內容,我在這里缺少什么知識?
如果您的舊內容比您正在編寫的內容大,則多余的部分將保留在文件中。 當您調用seek(0, 0)
您會從頭開始逐字節寫入,但不會刪除舊數據。 當您調用truncate()
您會刪除舊數據,因此它可以按您的需要工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.