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

news/2024/11/28 2:47:06/

在这个教程中,我们将学习如何使用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/news/1550501.html

相关文章

【微服务架构】Kubernetes与Docker在微服务架构中的最佳实践(详尽教程)

文章目录 什么是微服务架构Docker在微服务中的应用Docker基础Docker的核心组件 Docker在微服务中的优势 Kubernetes在微服务中的应用Kubernetes基础Kubernetes的核心组件 Kubernetes在微服务中的优势 Kubernetes与Docker的集成最佳实践容器化微服务服务发现与负载均衡自动化部署…

layui树形组件点击树节点后高亮的解决方案

效果显示&#xff1a; 代码 //节点高亮var nodes document.getElementsByClassName("layui-tree-txt");for (var i 0; i < nodes.length; i) {if (nodes[i].innerHTML obj.data.title){nodes[i].style.color "#006BF9";nodes[i].style.fontWeight …

Python 爬虫入门教程:从零构建你的第一个网络爬虫

网络爬虫是一种自动化程序&#xff0c;用于从网站抓取数据。Python 凭借其丰富的库和简单的语法&#xff0c;是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识&#xff0c;并实现一个简单的爬虫项目。 1. 什么是网络爬虫&#xff1f; 网络爬虫&#x…

使用 Maven 构建一个简单的 Java 项目

Apache Maven 是一个强大的构建自动化工具&#xff0c;主要用于 Java 项目。它简化了构建和管理任何基于 Java 的项目的流程。 本指南将涵盖 Maven 的安装、设置一个简单的 Java 项目以及使用 Maven 运行该项目。 1. 安装 安装 Java 在安装 Maven 之前&#xff0c;需要确保…

优化 Spring Boot 性能

优化 Spring Boot 性能是一个综合性的工作&#xff0c;需要从多个方面入手&#xff0c;涵盖数据库连接、缓存使用、数据库操作、异步处理、配置精简、资源压缩、HTTP 缓存、线程池调整等多个环节。通过合理的优化策略和精细的配置&#xff0c;可以显著提升应用的响应速度和处理…

shell查看服务器的内存和CPU,实时使用情况

要查看服务器的内存和 CPU 实时使用情况&#xff0c;可以使用以下方法和命令&#xff1a; 1. 使用 top 运行 top 命令以显示实时的系统性能信息&#xff0c;包括 CPU 和内存使用情况。 top按 q 退出。输出内容包括&#xff1a; CPU 使用率&#xff1a;位于顶部&#xff0c;标…

2024小迪安全基础入门第三课

目录 1、Web应用-防护产品-WAF保护 #WebWAF WAF的原理 1. 数据流监控 2. 策略匹配 3. 行为分析 4. 签名库 5.人工智能与机器学习 WAF 对 渗透测试 的影响 1. 提高攻击力度 2.延长测试时间 3. 误报与干扰 #WebCDN CDN的原理 1. 基本架构 2. 工作机制 袭击事件 …

HTTPS的单向认证和双向认证是什么?有什么区别?

目录标题 单向认证流程双向认证流程区别 单向认证流程 HTTPS单向认证‌是指只有服务器向客户端证明其身份。在这种认证方式中&#xff0c;服务器会向客户端发送一个由可信证书颁发机构&#xff08;CA&#xff09;签发的SSL证书&#xff0c;客户端会验证这个证书以确保服务器的…