python解压文件有多种方式,目标解压zip文件,所以尝试使用patool或zipfile完成,代码如下:
"""patool的方案"""
import patoolib
patoolib.extract_archive(zip_file_path, outdir=res_file_path)
"""zipfile的方案"""
import zipfile
with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
zip_ref.extractall(res_file_path)
二者均报错:
NotImplementedError: That compression method is not supported
原本以为是压缩文件本身有问题,加密了、压缩方法不支持、文件损坏;后来怀疑是python和依赖的版本问题,尝试了很多网上的方法都不成功。
后来偶然发现一句话 “patool是一个 Python 库,它为许多存档格式提供统一的命令行界面,依赖外部程序来处理这些格式。如果它报告不支持压缩方法,则意味着它尝试用于提取的基础工具不支持该特定方法。”
依赖外部程序,找到问题所在,我的虚拟机上没有7-zip和winrar之类的软件,安装上后,问题解决。
确保patool和所有相关的外部工具(如unzip、7z等)已更新到最新版本。这些工具的较新版本可能增加了对相关压缩方法的支持。
确保 ZIP 文件所需的特定外部程序已安装并可在系统路径中访问。patool可能需要7z、unzip或其他工具来提取 ZIP 文件,具体取决于所使用的压缩方法。
新的探索发现,直接引用zipfile报错的原因可能是版本问题,查看pypi上的zipfile,包含多版本,安装zipfile39之后使用运行成功,感觉对应的zipfile37那些也能运行成功!
"""zipfile39的方案"""
import zipfile39
with zipfile39.ZipFile(zip_file_path, 'r') as zip_ref:
zip_ref.extractall(res_file_path)
在打包包含patool的py文件成exe的时候,patool无法调用电脑上的7-zip工具导致exe运行不成功,改成zipfile39之后成功,也可以作为参考!