作者回复: 我为你写了两个demo,你参考一下用法: ### 1. 压缩多级目录到一个压缩包 以下代码将压缩一个包含多级子目录的目录到一个ZIP文件中。 ```python import zipfile import os def zipdir(path, ziph): # 遍历目录,添加文件到zip文件中 for root, dirs, files in os.walk(path): for file in files: ziph.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), os.path.join(path, '..'))) zip_file_path = 'example.zip' directory_to_zip = 'directory_to_compress' # 创建ZIP文件,并调用zipdir函数 with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf: zipdir(directory_to_zip, zipf) print(f'{directory_to_zip} has been compressed into {zip_file_path}') ``` ### 2. 压缩多个不同目录到一个压缩包 以下代码将压缩多个不同的目录到一个ZIP文件中。 ```python import zipfile import os def zipdir(path, ziph): # 遍历目录,添加文件到zip文件中 for root, dirs, files in os.walk(path): for file in files: ziph.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), os.path.join(path, '..'))) zip_file_path = 'multiple_directories.zip' directories_to_zip = ['dir1', 'dir2', 'dir3'] # 你可以将这里的目录替换为要压缩的目录 # 创建ZIP文件,并调用zipdir函数 with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf: for directory in directories_to_zip: zipdir(directory, zipf) print(f'Directories {directories_to_zip} have been compressed into {zip_file_path}') ``` 务必注意,你需要确保要压缩的目录存在,否则会引发异常。
作者回复: 我提供给你两个建议,你可以尝试去解决一下这个问题。 第1个是可以先将这样的一条命令单独在命令行里运行。 这样做的好处是可以规避掉Python组合命令和执行权限等等一系列问题。如果在命令行执行是成功的,那么放到Python当中,应该就是Python组合命令的地方出现了问题。 第二个是你可以直接看程序的输出,如果没有正常压缩成功的话,在Python中一定会有错误提示,跟着错误提示找到代码的问题在哪一行以及错误提示具体的内容定位到出现错误的原因。
作者回复: zipWithPassword() 只能用于解压缩,它的详细描述写在官方文档中。所以我在课程中教你用命令行执行压缩就是这个目的了
作者回复: 调用一次之后,会返回一个可迭代对象,可迭代对象默认只包含第一个元素,必须对它再次迭代,你才能获得下一个元素