首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python模块缓慢提取受密码保护的ZipFile

Python模块缓慢提取受密码保护的ZipFile
EN

Stack Overflow用户
提问于 2014-09-01 07:02:38
回答 2查看 3.4K关注 0票数 6

我正在编写一个python脚本,它应该提取一个zip文件:

董事会:比格-骨黑~ 1GHz Arm-Cortex-a8,debian喘息Zipfile: /home/milo/my.zip, ~ 8 MB

代码语言:javascript
运行
复制
>>> from zipfile import ZipFile
>>> zip = ZipFile("/home/milo/my.zip")
>>> zip.extractall(pwd="tst")

其他具有打开和读取->编写file文件,甚至提取特定文件的解决方案具有相同的效果。提取时间约为3-4分钟。

使用解压缩工具提取相同的文件需要不到2秒。

有人知道我的代码,甚至python库是什么吗?

谢谢Ajava

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-01 07:38:47

这似乎是Python2.7中ZipFile模块的一个文档问题。如果您查看ZipFile文档,它会清楚地提到:

解密非常慢,因为它是用本地Python而不是C实现的。

如果您需要更快的性能,可以从代码中调用外部程序(如解压缩或7zip),或者确保您正在处理的zip文件没有密码保护。

票数 6
EN

Stack Overflow用户

发布于 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库。

代码语言:javascript
运行
复制
pip3 install cython
python3 setup.py build_ext --inplace

然后再用两行代码运行原始脚本。

代码语言:javascript
运行
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25600432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档