Python を使用していくつかのファイルを暗号化していますが、ファイルのチャンクごとの読み取りに問題があります。
最後のチャンクのすべてのデータが返されないことがあります。
ファイルの長さが 307200 バイトの場合、問題はありません。長さが 279363 バイトの場合は、そうします。
このコードを 2 つのファイル (それぞれ 307200 バイトと 279363 バイト) で実行しました。
chunksize = 65536
w = open(filename + '.' + str(cs) + '.split', 'wb')
tdata = f.read(307200)
w.write(tdata)
w.close
infile.open(filename + '.' + str(cs) + '.split', 'rb')
while True:
chunk = infile.read(chunksize)
print "Chunk length: " + str(len(chunk))
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += ' ' * (16 - len(chunk) % 16)
そして、私はこれを得ました:
ファイル 1 (307200): チャンク長: 65536 チャンク長: 65536 チャンク長: 65536 チャンク長: 65536 チャンク長: 45056 チャンク長: 0 ファイル 2 (279363): チャンク長: 65536 チャンク長: 65536 チャンク長: 65536 チャンク長: 65536 チャンク長: 16384 チャンク長: 0
ご覧のとおり、最初のファイルのすべてのチャンク サイズの合計は正しく、2 番目のファイルの合計は正しくありません。そして、私には理由がわかりません。
私のPythonバージョンは2.6.5です
(Ubuntu 10.04.2 LTSで実行)
*編集:私の愚かな過ち。書いたばかりのファイルを読み取る前のw.close
代わりに使用しましたが、それが問題の原因でした。w.close()