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

embedded/2024/11/23 22:14:38/

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

相关文章

基于 NCD 优化的非线性优化 PID 控制

基于 NCD 优化的非线性优化 PID 控制 1. 引言 非线性控制设计 (Nonlinear Control Design, NCD) 是一种强大的控制方法,能够有效处理非线性系统的复杂动态行为。通过将 NCD 方法 应用于 PID 控制器的优化设计,可以实现对复杂非线性系统的高效控制和性能…

使用 PyTorch 实现并训练 VGGNet 用于 MNIST 分类

本文将展示如何使用 PyTorch 实现一个经典的 VGGNet 网络,并在 MNIST 数据集上进行训练和测试。我们将从模型构建开始,涵盖数据预处理、模型训练、评估、保存与加载模型,以及可视化预测结果等全过程。 1. VGGNet 模型的实现 首先,…

Docker nginx容器高可用(Keepalived)

概述 Keepalived主要作用:在多个服务器上安装Keepalived并且为各个服务器的Keepalived指定相同的虚拟IP。该虚拟IP根据服务器上Keepalived配置的角色、优先级 决定出现在其中一台服务器上,当拥有虚拟IP的服务器Keepalived进程被杀死后,那么此…

「Mac玩转仓颉内测版27」基础篇7 - 字符串类型详解

本篇将介绍 Cangjie 中的字符串类型,包括字符串的定义、字面量形式、插值表达、常用操作及应用场景,帮助开发者熟练掌握字符串的使用。 关键词 字符串类型定义字符串字面量插值字符串字符串拼接常用操作 一、字符串类型概述 在 Cangjie 中,…

长文解读:OSAID 1.0,全球首个开源AI标准,审视探讨其对AI行业实践开源的影响

引言 在人工智能(AI)的快速发展中,开源已经成为推动技术创新和知识共享的重要力量。随着AI技术的广泛应用,确保其开放性、透明性和可访问性变得至关重要。在这样的背景下,OSAID 1.0(Open Source AI Defini…

深度学习:GPT-1的MindSpore实践

GPT-1简介 GPT-1(Generative Pre-trained Transformer)是2018年由Open AI提出的一个结合预训练和微调的用于解决文本理解和文本生成任务的模型。它的基础是Transformer架构,具有如下创新点: NLP领域的迁移学习:通过最…

RAG与微调:大模型落地的最佳路径选择(文末赠书)

一、大模型技术发展现状 自2022年底ChatGPT掀起AI革命以来,大语言模型(LLM)技术快速迭代发展,从GPT-4到Claude 2,从文心一言到通义千问,大模型技术以惊人的速度发展。然而,在企业实际应用场景中…

圣诞节秘诀

🕰️你想在2024年圣诞节脱颖而出吗?利用我们的数据洞察,发现今年最受欢迎的礼物!无论是在亚马逊、速卖通、Shopify还是直销平台上,我们的排行榜都将帮助您找到最畅销和最受欢迎的产品。立即优化您的库存,以…