Python+7z:将文件和目录压缩为ZIP文件

devtools/2024/11/26 0:40:55/

在这个教程中,我们将学习如何使用Python脚本将文件和目录压缩为ZIP文件。我们将使用subprocess模块来调用外部命令行工具7z,这是一个功能强大的文件压缩工具。以下是详细的步骤和代码解析。

1. 准备工作

在开始之前,请确保你的系统中已经安装了7z命令行工具。如果没有安装,你可以从7-Zip官网下载并安装。安装好后,找到7z.exe执行文件,复制该文件到项目中,或者将所在目录路径添加到系统环境中。

2. 代码解析
python">import subprocess
from pathlib import Pathdef compress_to_zip_from_files(files_to_compress, output_zip_file, password=None):"""将多个文件压缩到指定zip文件中:param files_to_compress: 需要压缩的文件:param output_zip_file: 输出zip文件路径:param password: 加密密码:return: 命令执行结果"""# 构建7z命令,添加-p参数后跟密码以添加加密command = ['7z', 'a', '-tzip', output_zip_file] + list(files_to_compress)if password:command.append('-p' + str(password))# 调用7z命令行工具return subprocess.run(command).returncodedef compress_to_zip_from_dir(dir_path, password=''):"""将指定目录下的文件压缩到一个zip文件中,该zip文件保存在同级目录中:param dir_path: 待压缩文件所在文件夹路径:param password: 加密密码:return: 命令执行结果"""files = Path(dir_path).iterdir()output_zip_file = f'{dir_path}.zip'return compress_to_zip_from_files(files, output_zip_file, password)
2.1 导入模块
python">import subprocess
from pathlib import Path
  • subprocess模块用于执行外部命令。
  • Path模块用于处理文件路径。
2.2 压缩文件到ZIP
python">def compress_to_zip_from_files(files_to_compress, output_zip_file, password=None):"""将多个文件压缩到指定zip文件中:param files_to_compress: 需要压缩的文件:param output_zip_file: 输出zip文件路径:param password: 加密密码:return: 命令执行结果"""# 构建7z命令,添加-p参数后跟密码以添加加密command = ['7z', 'a', '-tzip', output_zip_file] + list(files_to_compress)if password:command.append('-p' + str(password))# 调用7z命令行工具return subprocess.run(command).returncode
  • 这个函数接受三个参数:要压缩的文件列表、输出的ZIP文件路径和可选的密码。
  • 构建7z命令,a参数表示添加文件到压缩文件,-tzip指定压缩格式为ZIP。
  • 如果提供了密码,会添加-p参数和密码以加密ZIP文件。
  • 使用subprocess.run执行命令,并返回命令的返回码。
2.3 压缩目录到ZIP
python">def compress_to_zip_from_dir(dir_path, password=''):"""将指定目录下的文件压缩到一个zip文件中,该zip文件保存在同级目录中:param dir_path: 待压缩文件所在文件夹路径:param password: 加密密码:return: 命令执行结果"""files = Path(dir_path).iterdir()output_zip_file = f'{dir_path}.zip'return compress_to_zip_from_files(files, output_zip_file, password)
  • 这个函数接受两个参数:目录路径和可选的密码。
  • 使用Path.iterdir()获取目录下的所有文件和子目录。
  • 构建输出的ZIP文件路径,直接在原目录下创建同名的ZIP文件。
  • 调用compress_to_zip_from_files函数进行压缩。
3. 使用脚本

在脚本的if __name__ == '__main__':部分,我们可以直接调用compress_to_zip_from_dir函数来压缩指定目录。

python">if __name__ == '__main__':compress_to_zip_from_dir(r"C:\Users\user\Desktop\1",'123')
  • 这里指定了目录路径和密码123
  • 脚本将压缩指定目录下的所有文件,并创建一个加密的ZIP文件。
4. 注意事项
  • 确保提供的路径和文件名是正确的,否则脚本可能会失败。
  • 确保7z工具已经安装在你的系统上。
  • 如果你不想加密ZIP文件,可以省略密码参数或将其设置为空字符串。

通过这个教程,你应该能够理解如何使用Python脚本和7z工具来压缩文件和目录。你可以根据需要修改脚本,以适应不同的压缩需求。


http://www.ppmy.cn/devtools/136979.html

相关文章

【WPF】Prism学习(十)

Prism MVVM 1.BindableBase 1.1. BindableBase的作用: Prism库提供了一个基础类BindableBase,这个类实现了INotifyPropertyChanged接口。这个接口允许ViewModel(视图模型)通知视图(View)当属性&#xff0…

MongoDB相关问题

视频教程 【GeekHour】20分钟掌握MongoDB Complete MongoDB Tutorial by Net Ninja MongoDB开机后调用缓慢的原因及解决方法 问题分析: MongoDB开机后调用缓慢,通常是由于以下原因导致: 索引重建: MongoDB在启动时会重建索引…

揭秘区块链隐私黑科技:零知识证明如何改变未来

文章目录 1. 引言:什么是零知识证明?2. 零知识证明的核心概念与三大属性2.1 完备性(Completeness)2.2 可靠性(Soundness)2.3 零知识性(Zero-Knowledge) 3. 零知识证明的工作原理4. 零…

Python Selenium:Web自动化测试与爬虫开发

Python Selenium:Web自动化测试与爬虫开发 Python Selenium:Web自动化测试与爬虫开发安装Selenium设置WebDriver基础示例页面元素交互处理JavaScript和Cookies浏览器控制屏幕截图Headless Mode结束会话错误处理与调试 ***本文由AI辅助生成*** Python Se…

windowsC#-在异步任务完成时处理

通过使用 Task.WhenAny,可同时启动多个任务,并在它们完成时逐个对它们进行处理,而不是按照它们的启动顺序进行处理。 下面的示例使用查询来创建一组任务。 每个任务都下载指定网站的内容。 在对 while 循环的每次迭代中,对 WhenA…

前端框架 Redux tool RTK 总结

目录 一、安装依赖 二、创建redux仓库的目录结构 三、createSlice 四、configureStore 五、配置全局仓库标签 六、useSelector 七、useDispatch Redux Tool官网:Redux - A JS library for predictable and maintainable global state management | Redux 一…

gitHub常用操作

gitHub常用操作 1、把项目拉下来2、添加上游仓库3、进入分支4、从上游仓库拉取更新 1、把项目拉下来 在对应项目的右上角点击fork,fork下来:将远程仓库复制到个人仓库 在创建好的分支文件夹下使用 git clone自己远程仓库下的http地址(fork…

手机发展史介绍

手机,这个曾经在电影和科幻小说中出现的高科技产品,如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端,手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…