You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python ZipFile提取澳印WinZip加密压缩包报错求助

解决Python ZipFile模块不支持WinZip加密压缩包的问题

核心原因

Python标准库的zipfile模块仅支持传统的ZipCrypto加密算法,而WinZip默认可能使用了AES加密(更高强度);另外如果压缩时用了zipfile不支持的压缩方法(比如部分WinZip专属格式),也会触发该错误。

具体解决思路

  • 调整WinZip的压缩加密设置
    让发送方在WinZip压缩时做以下配置:

    1. 压缩格式选择「Zip(传统)」,确保使用Deflate压缩算法
    2. 加密方式选择「ZipCrypto」(而非AES-128/AES-256)
      这样生成的压缩包就能被标准库zipfile正常识别。
  • 改用支持AES加密的第三方库
    如果发送方必须用AES加密,直接用pyzipper替代标准库zipfile——这个库完全兼容zipfile的API,同时支持AES加密:

    1. 先安装依赖:pip install pyzipper
    2. 修改代码:
      import pyzipper
      
      # 替换原ZipFile为AESZipFile
      with pyzipper.AESZipFile(self.DIR_ATT + att) as zipObj:
          listOfFileNames = zipObj.namelist()
          print(listOfFileNames)
      
          for file in listOfFileNames:
              print("FILE:", file)
      
              if str(att.strip(".zip") + "/SR1000C01A") in file:
                  print("FILE FOUND")
                  print("password:", password)
                  zipObj.extract(file, path=self.DIR_ATT, pwd=password.encode())
                  # 移除多余的zipObj.close(),with语句会自动管理文件关闭
                  df = pd.read_csv(self.DIR_ATT + file)
      
  • 修复原代码的冗余操作
    原代码在with代码块内调用了zipObj.close(),这属于多余操作——with语句会自动管理文件对象的生命周期,提前关闭可能导致后续操作出现异常,建议直接删除该行。


内容的提问来源于stack exchange,提问作者Ludogiraud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:36:16