Python+7z.exe实现自动化压缩与解压

简介

我们将使用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')
相关推荐
小二·11 分钟前
Python Web 开发进阶实战 :AI 原生数字孪生 —— 在 Flask + Three.js 中构建物理世界实时仿真与优化平台
前端·人工智能·python
hmywillstronger1 小时前
【Rhino】【Python】 查询指定字段并cloud标注
开发语言·python
dyyx1112 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
二十雨辰2 小时前
[python]-函数
开发语言·python
CryptoRzz2 小时前
如何高效接入日本股市实时数据?StockTV API 对接实战指南
java·python·kafka·区块链·状态模式·百度小程序
小二·2 小时前
Python Web 开发进阶实战(终章):从单体应用到 AI 原生生态 —— 45 篇技术演进全景与未来开发者生存指南
前端·人工智能·python
极客小云2 小时前
【基于 PyQt6 的红外与可见光图像配准工具开发实战】
c语言·python·yolo·目标检测
0思必得04 小时前
[Web自动化] 处理爬虫异常
运维·爬虫·python·selenium·自动化·web自动化
喵手4 小时前
Python爬虫零基础入门【第九章:实战项目教学·第17节】内容指纹去重:URL 变体/重复正文的识别!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·内容指纹去重·url变体
喵手5 小时前
Python爬虫零基础入门【第五章:数据保存与入库·第1节】先学最通用:CSV/JSONL 保存(可复现、可分享)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·数据保存与入库·csv/jsonl