簡體   English   中英

為什么 file.write() 在末尾添加一個額外的字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM