在这个教程中,我们将学习如何使用Python脚本将文件和目录压缩为ZIP文件。我们将使用
subprocess
模块来调用外部命令行工具
7z
,这是一个功能强大的文件压缩工具。以下是详细的步骤和代码解析。
1. 准备工作
在开始之前,请确保你的系统中已经安装了
7z
命令行工具。如果没有安装,你可以从7-Zip官网下载并安装。安装好后,找到
7z.exe
执行文件,复制该文件到项目中,或者将所在目录路径添加到系统环境中。
2. 代码解析
import subprocess
from pathlib import Path
defcompress_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
defcompress_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 导入模块
import subprocess
from pathlib import Path
subprocess
模块用于执行外部命令。Path
模块用于处理文件路径。
2.2 压缩文件到ZIP
defcompress_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
defcompress_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
函数来压缩指定目录。
if __name__ =='__main__':
compress_to_zip_from_dir(r"C:\Users\user\Desktop\1",'123')
- 这里指定了目录路径和密码
123
。 - 脚本将压缩指定目录下的所有文件,并创建一个加密的ZIP文件。
4. 注意事项
- 确保提供的路径和文件名是正确的,否则脚本可能会失败。
- 确保7z工具已经安装在你的系统上。
- 如果你不想加密ZIP文件,可以省略密码参数或将其设置为空字符串。
通过这个教程,你应该能够理解如何使用Python脚本和
7z
工具来压缩文件和目录。你可以根据需要修改脚本,以适应不同的压缩需求。
版权归原作者 和风330 所有, 如有侵权,请联系我们删除。