我正在使用 python 的 zipfile 模块来提取我从互联网上检索到的 zipfile
urllib.urlretrieve()
zip文件中的文件是bsdiff创建的补丁文件,但是当我让python提取zip文件并尝试使用bspatch时,它说补丁文件损坏。当我使用 7-zip 手动提取 zip 文件时,会覆盖补丁文件,然后运行补丁程序,它会很好地修补。我还注意到手动覆盖这些文件时字节大小不同。
一个应该是 195 字节但是是 196 字节,一个应该是 20656 字节但是是 20781 字节,一个是正确的大小(这是唯一一个没有损坏补丁消息的补丁)
我用来提取的代码是:
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 将其压缩为存储文件。
有任何想法吗?