いくつかのファイルが非常に大きいいくつかのファイルにxOr操作を適用しようとしています。
基本的に私はファイルを取得しており、バイトごとにxor-ingしています(少なくともこれは私がやっていると思います)。大きなファイル(約70MB)にヒットすると、メモリ不足のエラーが発生し、スクリプトがクラッシュします。
私のコンピュータには16GBのRAMがあり、その50%以上が使用可能なので、これは私のハードウェアには関係しません。大きなファイルをPythonで解凍する
def xor3(source_file, target_file):
b = bytearray(open(source_file, 'rb').read())
for i in range(len(b)):
b[i] ^= 0x71
open(target_file, 'wb').write(b)
私はチャンクでファイルを読み込もうとしましたが、出力が所望のものではないとして、私はこのためにあまりにもunexperimentedだそうです。最初の機能はもちろん、私が欲しいものを返す:)
def xor(data):
b = bytearray(data)
for i in range(len(b)):
b[i] ^= 0x41
return data
def xor4(source_file, target_file):
with open(source_file,'rb') as ifile:
with open(target_file, 'w+b') as ofile:
data = ifile.read(1024*1024)
while data:
ofile.write(xor(data))
data = ifile.read(1024*1024)
をこの種の操作のためのappropiateソリューションとは何ですか?私は間違って何をしているのですか?大容量のファイルを超える遅延し
あなたが0x71' 'とのXOR機能の一つで、ファイル –
の内容は何その他は '0x41'となります。これはあなたが期待したものですか?明らかにこれは結果を変えます... – Bakuriu
@Bakuriu私はちょうど異なるキーを使って別のファイルで試していました。 –