2016-05-04 42 views
0

我试图找到用零覆盖文件的最佳方法;该文件中的每个字符会被0如何用零覆盖文件行

替代目前我有这方面的工作:

import fileinput 
for line in fileinput.FileInput('/path/to/file', inplace =1): 
    for x in line: 
     x = 0 

但是这看起来非常低效的;有没有更好的方法来做到这一点?

+0

'0'是指'0x00'字节还是ascii字符'0'? – EbraHim

回答

1

而是由一个替换的人物之一,我希望创建具有相同的名称和大小的新文件:

获得的大小当前文件:

>>> 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字节值

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() 
0

您可以检查此:

import fileinput 
for line in fileinput.FileInput('/path/to/file', inplace =1): 
    print len(line)*'0' 
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