Zipfile python模块的字节大小差异

M0r*_*3v5 2 python zip byte zipfile

我正在使用用于python的zipfile模块来提取我从互联网上检索到的zipfile

urllib.urlretrieve()

zip文件中的文件是由bsdiff创建的补丁文件,但是当我让python解压缩zip文件并尝试使用bspatch时,它会显示损坏的补丁文件.当我使用7-zip手动提取zip文件时,覆盖补丁文件,然后运行修补程序,它可以很好地修补.我还注意到手动覆盖这些文件时,bytesize不同.

一个应该是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()
Run Code Online (Sandbox Code Playgroud)

使用普通的Deflate压缩zip文件,我甚至尝试使用带有7zip的ZIP_STORED,只是将其作为存储文件进行压缩.

有任何想法吗?

Woo*_*ble 5

这是在Windows上吗?也许试试吧f = open(dest, 'wb')

仅在Windows上,b使文件系统将文件视为二进制文件而不是纯文本,而不是使用行结尾.在其他系统上,没有区别(并且b默默地被忽略).