私はpython用のzipfileモジュールを使用して、インターネットから取得したzipfileを抽出しています
urllib.urlretrieve()
zip ファイル内のファイルは bsdiff によって作成されたパッチ ファイルですが、python で zip ファイルを抽出して bspatch を使用しようとすると、破損したパッチ ファイルと表示されます。7-zip を使用して zip ファイルを手動で抽出すると、パッチ ファイルが上書きされ、パッチャーが正常にパッチされます。これらのファイルを手動で上書きすると、バイトサイズが異なることにも気付きました。
1 つは 195 バイトである必要がありますが 196 バイト、もう 1 つは 20656 バイトである必要がありますが 20781 バイトであり、もう 1 つは適切なサイズです (これは、破損したパッチ メッセージなしでパッチを適用する唯一のものです)。
抽出に使用しているコードは次のとおりです。
z = zipfile.ZipFile('patchfiles.zip', 'r', zipfile.ZIP_DEFLATED)
z.printdir()
for info in z.infolist():
if not os.path.isdir(patchdir):
os.mkdir(patchdir)
fname = info.filename
data = z.read(fname)
dest = os.path.join(patchdir, fname)
data = z.read(fname)
f = open(dest, 'w')
f.write(data)
f.close()
z.close()
zip ファイルは通常の Deflate を使用して圧縮されています。保存されたファイルとして圧縮するだけで、7zip で ZIP_STORED を使用してみました。
何か案は?