我正在编写一个python脚本,它应该提取一个zip文件:
董事会:比格-骨黑~ 1GHz Arm-Cortex-a8
,debian喘息Zipfile: /home/milo/my.zip, ~ 8 MB
>>> from zipfile import ZipFile
>>> zip = ZipFile("/home/milo/my.zip")
>>> zip.extractall(pwd="tst")
其他具有打开和读取->编写file文件,甚至提取特定文件的解决方案具有相同的效果。提取时间约为3-4分钟。
使用解压缩工具提取相同的文件需要不到2秒。
有人知道我的代码,甚至python库是什么吗?
谢谢Ajava
发布于 2014-09-01 07:38:47
这似乎是Python2.7中ZipFile模块的一个文档问题。如果您查看ZipFile文档,它会清楚地提到:
解密非常慢,因为它是用本地Python而不是C实现的。
如果您需要更快的性能,可以从代码中调用外部程序(如解压缩或7zip),或者确保您正在处理的zip文件没有密码保护。
发布于 2022-06-06 06:04:02
从我的答案中抄送https://stackoverflow.com/a/72513075/10860732
Python没有在纯c语言中实现压缩解密是非常愚蠢的。
所以我用cython制作它,速度是它的17倍。
只要从这个要点中得到dezip.pyx和setup.py。
https://gist.github.com/zylo117/cb2794c84b459eba301df7b82ddbc1ec
并安装cython并构建cython库。
pip3 install cython
python3 setup.py build_ext --inplace
然后再用两行代码运行原始脚本。
import zipfile
# add these two lines
from dezip import _ZipDecrypter_C
setattr(zipfile, '_ZipDecrypter', _ZipDecrypter_C)
z = zipfile.ZipFile('./test.zip', 'r')
z.extractall('/tmp/123', None, b'password')
https://stackoverflow.com/questions/25600432
复制相似问题