27|zipfile压缩库:如何给数据压缩&加密备份?
该思维导图由 AI 生成,仅供参考
使用 zipfile 实现无密码压缩
- 深入了解
- 翻译
- 解释
- 总结
Python中的zipfile压缩库和7zip软件为实现数据压缩和加密备份提供了重要工具。文章介绍了使用zipfile库实现无密码压缩的方法,包括目录遍历、自动生成压缩包的文件名以及将文件夹写入压缩文件的具体操作。同时,还介绍了使用可执行命令实现有密码压缩的方法,通过命令行方式调用实现文件的加密压缩。文章还提到了如何利用Python的popen()函数封装7z.exe,实现有密码文件压缩功能。总结指出无密码压缩文件简单方便,而有密码压缩文件更加安全,适合进行每日数据自动化备份。此外,还提到了新的函数返回方式yield的应用场景。整体而言,本文内容详实,适合读者快速了解并掌握相关技术特点。
《Python 自动化办公实战课》,新⼈⾸单¥59
全部留言(5)
- 最新
- 精选
- ifelse请问多个目录改怎么压缩?
作者回复: 我为你写了两个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}') ``` 务必注意,你需要确保要压缩的目录存在,否则会引发异常。
2023-07-24归属地:浙江2 - 碧海蓝天老师,请问一下我使用7z.exe a -tzip -ppwd666 C:\files 并没有压缩成功,这是为什么呢?
作者回复: 我提供给你两个建议,你可以尝试去解决一下这个问题。 第1个是可以先将这样的一条命令单独在命令行里运行。 这样做的好处是可以规避掉Python组合命令和执行权限等等一系列问题。如果在命令行执行是成功的,那么放到Python当中,应该就是Python组合命令的地方出现了问题。 第二个是你可以直接看程序的输出,如果没有正常压缩成功的话,在Python中一定会有错误提示,跟着错误提示找到代码的问题在哪一行以及错误提示具体的内容定位到出现错误的原因。
2021-07-26 - Soul of the Dragon老师,请问为什么我用zipWithPassword()函数对文件夹进行压缩后,生成的压缩包还是没有密码的状态呢?
作者回复: zipWithPassword() 只能用于解压缩,它的详细描述写在官方文档中。所以我在课程中教你用命令行执行压缩就是这个目的了
2021-04-15 - LDxy使用 yield 返回的对象被称作生成器对象,该对象没法像列表一样,一次性获得对象中的所有数据,你必须使用 for 循环迭代访问,才能依次获取数据。这句话怎么理解呢?调用一次getAllFiles是返回一个数据还是返回所有数据?
作者回复: 调用一次之后,会返回一个可迭代对象,可迭代对象默认只包含第一个元素,必须对它再次迭代,你才能获得下一个元素
2021-04-13 - ifelse学习打卡2023-07-24归属地:浙江