我试图找到用零覆盖文件的最佳方法;该文件中的每个字符会被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