简介
我们将使用
subprocess
模块来调用系统命令行工具7z.exe
,实现文件的自动压缩与解压。
环境准备
在开始之前,请确保您的计算机上安装了7z.exe
工具。7z.exe
是7-Zip程序的一部分,可以从7-Zip官方网站下载。安装完成后,请确保7z.exe
的路径被添加到系统的环境变量中,以便在任何目录下都能调用。
代码实现
python
import subprocess
def decompress(zip_file, output_folder, password=None):
"""
将压缩文件解压到指定目录
:param zip_file: 压缩文件路径
:param output_folder: 输出目录
:param password: 密码
"""
try:
# 调用7z.exe进行解压
command = ['7z', 'x', str(zip_file), '-o' + str(output_folder)]
if password:
command.append(f'-p{password}')
subprocess.run(command, check=True)
print(f"解压成功: {output_folder}")
except subprocess.CalledProcessError as e:
print(f"解压失败: {e}")
def compress(input_dir, output_zip_file, password=None):
"""
指定目录进行压缩
:param input_dir: 需要压缩的文件夹
:param output_zip_file: 保存的压缩文件
:param password: 密码
"""
try:
command = ['7z', 'a', str(output_zip_file), str(input_dir)]
if password:
command.append(f'-p{password}')
subprocess.run(command, check=True)
print(f"压缩成功:{output_zip_file}")
except subprocess.CalledProcessError as e:
print(f"压缩失败: {e}")
1. decompress
函数
- 功能:解压指定的压缩文件到指定目录。
- 参数 :
zip_file
:压缩文件的路径。output_folder
:解压后文件的输出目录。password
:如果压缩文件被加密,需要提供密码。
- 过程 :
- 使用
subprocess.run
调用7z.exe
命令行工具。 command
列表中包含了7z
命令和必要的参数,如x
表示解压,-o
后跟输出目录。- 如果提供了密码,会添加
-p
参数后跟密码。 - 如果解压成功,会打印成功信息;如果失败,会捕获异常并打印错误信息。
- 使用
2. compress
函数
- 功能:将指定目录压缩成压缩文件。
- 参数 :
input_dir
:需要被压缩的目录路径。output_zip_file
:压缩文件的保存路径。password
:如果需要加密压缩文件,提供密码。
- 过程 :
- 使用
subprocess.run
调用7z.exe
命令行工具。 command
列表中包含了7z
命令和必要的参数,如a
表示添加(压缩)文件。- 如果提供了密码,会添加
-p
参数后跟密码。 - 如果压缩成功,会打印成功信息;如果失败,会捕获异常并打印错误信息。
- 使用
使用示例
解压示例
python
decompress('path/to/your/file.zip', 'path/to/output/folder', 'yourpassword')
压缩示例
python
compress('path/to/your/folder', 'path/to/output/file.zip', 'yourpassword')