我試圖找到用零覆蓋文件的最佳方法;該文件中的每個字符會被0如何用零覆蓋文件行
替代目前我有這方面的工作:
import fileinput
for line in fileinput.FileInput('/path/to/file', inplace =1):
for x in line:
x = 0
但是這看起來非常低效的;有沒有更好的方法來做到這一點?
我試圖找到用零覆蓋文件的最佳方法;該文件中的每個字符會被0如何用零覆蓋文件行
替代目前我有這方面的工作:
import fileinput
for line in fileinput.FileInput('/path/to/file', inplace =1):
for x in line:
x = 0
但是這看起來非常低效的;有沒有更好的方法來做到這一點?
而是由一個替換的人物之一,我希望創建具有相同的名稱和大小的新文件:
獲得的大小當前文件:
>>> file_info = os.stat("/path/to/file")
>>> size = file_info.st_size
創建另一個包含0x00
的文件與sa我大小:
>>> f = open("/path/to/file", "w")
>>> f.seek(size - 1)
>>> f.write("\x00")
>>> f.close()
>>>
我認爲通過0
,你的意思是0x00
字節值
使用正則表達式替換,也許?
import re
path = "test.txt"
f = open(path, "r")
data = re.sub(".", "0", f.read())
f.close()
f = open(path, "w")
f.write(data)
f.close()
您可以檢查此:
import fileinput
for line in fileinput.FileInput('/path/to/file', inplace =1):
print len(line)*'0'
使用正則表達式可能是更清潔,但這裏是用fileinput
一個解決方案:
import fileinput
import sys
for line in fileinput.FileInput('/path/to/file', inplace=True):
line = '0' * len(line)
sys.stdout.write(line + "\n")
注,如果你使用print
函數,將會增加額外的換行符 - 所以我用sys.stdout.write
'0'是指'0x00'字節還是ascii字符'0'? – EbraHim