簡體   English   中英

Python不使用truncate擦除文件內容

[英]Python not erasing contents of file with truncate

我在擦除文件內容時遇到問題。 我有一個帶有'ABC'的文件。 我打開它並進行truncate()清除文件中的所有內容,然后向其中寫入新內容。 但是我寫的任何東西都被附加到以前的內容之后。

>>> handle=open('test.txt', 'r+')
>>> stuff = handle.read()
>>> stuff
'ABC'
>>> handle.truncate()
>>> handle.write('DEF'+stuff)
>>> handle.close()
>>> handle=open('test.txt', 'r+')
>>> handle.read()
'ABCDEFABC'

我認為我應該得到'DEFABC'但我得到的是'ABC'加上'DEFABC'

handle.read() ,您位於文件的結尾,因此沒有什么可以從這里截斷的。 handle.read()之后發出handle.seek(0) handle.read() 然后將數據寫入文件,然后在必要時截斷。

truncate的文檔中,默認值是當前位置。 您需要傳遞0

截斷文件的大小。 如果存在可選的size參數,則文件將被截斷為(最多)該大小。 尺寸默認為當前位置。 當前文件位置未更改。 請注意,如果指定的大小超過文件的當前大小,則結果取決於平台:可能的情況是文件可能保持不變,增大為指定大小(好像是零填充的)或使用未定義的新內容增大到指定的大小。 可用性:Windows,許多Unix變體。

從文檔:

file.truncate([size])

截斷文件的大小。 如果存在可選的size參數,則文件將被截斷為(最多)該大小。 尺寸默認為當前位置。

您在調用handle.truncate()之后調用handle.read() ,此時當前位置是文件的末尾,因此Python handle.read()文件截斷為當前大小,這不會執行任何操作。 您需要傳遞0作為truncate的參數: handle.truncate(0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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