我正在尝试找到用零覆盖文件的最佳方法;文件中的每个字符都将替换为0。
目前我有这个工作:
import fileinput
for line in fileinput.FileInput('/path/to/file', inplace =1):
for x in line:
x = 0
但这看起来非常低效;有更好的方法吗?
答案 0 :(得分:1)
使用正则表达式替换,可能吗?
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()
答案 1 :(得分:1)
我不是逐个替换字符,而是更喜欢创建一个名称相同且大小相同的新文件:
获取当前文件的大小:
>>> file_info = os.stat("/path/to/file")
>>> size = file_info.st_size
创建包含0x00
大小相同的另一个文件:
>>> f = open("/path/to/file", "w")
>>> f.seek(size - 1)
>>> f.write("\x00")
>>> f.close()
>>>
我假设为0
,您的意思是0x00
字节值
答案 2 :(得分:1)
使用正则表达式可能更简洁,但这是使用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
答案 3 :(得分:0)
您可以查看:
import fileinput
for line in fileinput.FileInput('/path/to/file', inplace =1):
print len(line)*'0'