2016-05-04 9 views
0

ファイルを0で上書きする最善の方法を見つけようとしています。ファイル内のすべての文字が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によって仮定、あなたは正規表現を使用して

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

0x00バイトの値を意味し、おそらくクリーナーですが、ここで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

関連する問題