2016-05-04 44 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