Python 无法使用SSZipArchive在iOS9中解压缩大型zip文件(3.3GB)

Python 无法使用SSZipArchive在iOS9中解压缩大型zip文件(3.3GB),python,ios,zip,unzip,zipfile,Python,Ios,Zip,Unzip,Zipfile,作为标题,我使用python zipfile模块从Django后端服务器(托管在Ubuntu 14.04.1 LTS上)创建zip文件: zipfile.ZipFile(dest_path, mode='w', compression=zipfile.ZIP_DEFLATED, allowZip64=True) 我设法用我的Mac in Finder打开了它,但使用该库没有成功。我已经尝试使用最新的主分支提交,并且还标记了v1.0.1和v0.4.0 使用v0.

作为标题,我使用python zipfile模块从Django后端服务器(托管在Ubuntu 14.04.1 LTS上)创建zip文件:

zipfile.ZipFile(dest_path, mode='w', compression=zipfile.ZIP_DEFLATED, 
                allowZip64=True)
我设法用我的Mac in Finder打开了它,但使用该库没有成功。我已经尝试使用最新的主分支提交,并且还标记了v1.0.1和v0.4.0

使用v0.4.0,我在unzip.c的第1506行中得到错误:

    if (unz64local_CheckCurrentFileCoherencyHeader(s,
                                                   &iSizeVar, 
                                                   &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK)
        return UNZ_BADZIPFILE;
而且每次都用相同的
currentFileNumber
解压同一个文件时都会遇到问题

有人得到任何线索吗

另外,我认为SSZipArchive应该支持Zip64归档文件,正如我在他们的github repo上询问的那样

更新[20160129] 我对zip文件执行了zipinfo检查,并获得以下输出:

...
-rw-r--r--  2.0 unx     1992 b- defN 26-Nov-15 14:59 <file_name>
-rw-r--r--  2.0 unx      925 b- defN 26-Nov-15 14:59 <file_name>
-rw-r--r--  2.0 unx     1194 b- defN 26-Nov-15 14:59 <file_name>
-rw-r--r--  2.0 unx       72 b- defN 26-Nov-15 14:52 <file_name>
-rw-r--r--  2.0 unx      289 b- defN 18-Jan-16 11:27 <file_name>
-rw-r--r--  2.0 unx     1541 b- defN 18-Jan-16 11:27 <file_name>
-rw-r--r--  2.0 unx      295 b- defN 18-Jan-16 11:27 <file_name>
-rw-r--r--  2.0 unx 449619181 b- defN 18-Jan-16 11:26 <file_name>
-rw-r--r--  4.5 unx 73128184 bx defN 18-Jan-16 11:26 <file_name>
-rw-r--r--  4.5 unx 69444488 bx defN 18-Jan-16 11:26 <file_name>
-rw-r--r--  4.5 unx   671440 bx defN 18-Jan-16 11:26 <file_name>
-rw-r--r--  4.5 unx 20189549 bx defN 18-Jan-16 11:27 <file_name>
-rw-r--r--  4.5 unx      197 bx defN 18-Jan-16 11:26 <file_name>
-rw-r--r--  4.5 unx  1379396 bx defN 18-Jan-16 11:26 <file_name>
...
。。。
-rw-r--r--2.0 unx 1992年11月26日星期五14:59
-rw-r--r--2.0 unx 925 b-defN 2015年11月26日14:59
-rw-r--r--2.0 unx 1194 b-defN 2015年11月26日14:59
-rw-r--r--2.0 unx 72 b-定义2015年11月26日14:52
-rw-r--r--2.0 unx 289 b-defN 2016年1月18日11:27
-rw-r--r--2.0 unx 1541 b-定义2016年1月18日11:27
-rw-r--r--2.0 unx 295 b-定义2016年1月18日11:27
-rw-r--r--2.0 unx 449619181 b-定义16年1月18日11:26
-rw-r--r--4.5 unx 73128184 bx defN 16年1月18日11:26
-rw-r--r--4.5 unx 694488 bx defN 16年1月18日11:26
-rw-r--r--4.5 unx 671440 bx defN 2016年1月18日11:26
-rw-r--r--4.5 unx 20189549 bx定义2016年1月18日11:27
-rw-r--r--4.5 unx 197 bx defN 16年1月18日11:26
-rw-r--r--4.5 unx 1379396 bx defN 2016年1月18日11:26
...

经过十几次尝试和错误,我发现python zipfile包生成的zip文件有问题。如果我使用Ubuntu服务器提供的zip命令

版权所有(c)1990-2008软件许可证的信息ZIP-类型“ZIP”-L”

这是Zip 3.0(2008年7月5日),由Info Zip提供

为了归档4GB的大数据,SSZipArchive可以成功提取zip包

我用zipinfo测试了zip文件,发现:

...
-rw-r--r--  3.0 unx     2939 bx     2677 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx    15069 bx     3040 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     3265 bx     3003 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     3048 bx     2766 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     3453 bx     3168 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     1415 tx      534 defN 16-Jan-28 16:33 <file_name>
drwxr-xr-x  3.0 unx        0 bx        0 stor 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     3302 tx      695 defN 16-Jan-28 16:33 <file_name>
drwxr-xr-x  3.0 unx        0 bx        0 stor 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx   130678 bx   127322 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx   133540 bx   130045 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx      136 tx       71 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     1416 tx      541 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     1417 tx      541 defN 16-Jan-28 16:33 <file_name>
-rw-r--r--  3.0 unx     2766 tx      652 defN 16-Jan-28 16:33 <file_name>
5551 files, 3854751563 bytes uncompressed, 3793408959 bytes compressed:  1.6%
。。。
-rw-r--r--3.0 unx 2939 bx 2677 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 15069 bx 3040 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 3265 bx 3003 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 3048 bx 2766 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 3453 bx 3168 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 1415 tx 534 defN 16-Jan-28 16:33
drwxr-xr-x 3.0 unx 0 bx 0存储16-Jan-28 16:33
-rw-r--r--3.0 unx 3302 tx 695 defN 16-Jan-28 16:33
drwxr-xr-x 3.0 unx 0 bx 0存储16-Jan-28 16:33
-rw-r--r--3.0 unx 130678 bx 127322 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 133540 bx 130045 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 136 tx 71 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 1416 tx 541 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 1417 tx 541 defN 16-Jan-28 16:33
-rw-r--r--3.0 unx 2766 tx 652 defN 16-Jan-28 16:33
5551个文件,3854751563个未压缩字节,3793408959个压缩字节:1.6%

zip归档文件的标题中似乎错误地描述了文件的大小。还有其他一些依赖minizip的工具,它们特别报告了JSON文件的这种行为,尽管它们似乎是很老的问题。您是否知道导致问题的文件类型,是否可以使用另一个zip工具将其删除以帮助缩小行为范围?我发现导致问题的文件是大型mp4视频文件。但我不知道这部大型mp4视频是否是罪魁祸首。您可以看到上面尺寸为449619181的2.0行是大型mp4文件。您是否碰巧对mp4有文件注释@ASmallShellScript如何检查一个文件是否有文件注释?我认为类似的方法可以工作。您可能可以更好地查找所需的文件,因为它非常大。zf=zipfile.zipfile(存档名称),用于zf.infolist()中的信息:info.comment