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