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

如何使用Pyzipper为加密压缩包中的文件添加注释?

问题解决:Pyzipper给压缩包内单个文件添加注释

你的代码存在两个核心问题:

  1. 错误调用包注释属性:zf.comment(...)是错误写法,zf.comment是赋值属性而非方法,且它控制的是整个压缩包的注释,并非包内单个文件的注释。
  2. 单个文件注释需通过ZipInfo对象配置:你看到的self.comment = b""是ZipInfo类的属性,对应压缩包内单个文件的注释,必须通过创建ZipInfo实例来设置。

修正后的代码

import pyzipper

def wgzipuser(wgfile,wgzippass):
    wgzipfilename = f"wgconfigs/{wgfile}.zip"
    conf_file_path = f"wgconfigs/{wgfile}.conf"
    
    with pyzipper.AESZipFile(wgzipfilename,
                            'w',
                            compression=pyzipper.ZIP_LZMA,
                            compresslevel=9,
                            ) as zf:
        # 1. 创建对应文件的ZipInfo对象,自动读取原文件元数据
        zinfo = pyzipper.ZipInfo.from_file(conf_file_path)
        # 2. 设置单个文件的注释,需转为字节串格式
        zinfo.comment = bytes("这是.conf文件的专属注释", encoding="utf-8")
        
        zf.setpassword(bytes(wgzippass, encoding="utf-8"))
        zf.setencryption(pyzipper.WZ_AES, nbits=256)
        # 3. 写入文件时传入配置好的ZipInfo对象
        zf.write(conf_file_path, zinfo=zinfo)
        
        # 若需给整个压缩包加注释,直接赋值即可
        # zf.comment = b"这是整个压缩包的注释"
        
        print(wgzipfilename)
        return wgzipfilename

关键说明

  • ZipInfo.from_file()会自动读取原文件的权限、修改时间等元数据,也可手动创建ZipInfo对象自定义这些信息。
  • 文件注释必须是字节串,可通过bytes(注释内容, encoding="utf-8")转换,ASCII字符也可直接用b"注释内容"。
  • 建议使用最新版pyzipper,避免旧版本的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:54:43