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

embedded/2024/11/20 3:15:44/

简介

我们将使用subprocess模块来调用系统命令行工具7z.exe,实现文件的自动压缩与解压。

环境准备

在开始之前,请确保您的计算机上安装了7z.exe工具。7z.exe是7-Zip程序的一部分,可以从7-Zip官方网站下载。安装完成后,请确保7z.exe的路径被添加到系统的环境变量中,以便在任何目录下都能调用。

代码实现

python">import subprocessdef 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')

http://www.ppmy.cn/embedded/138950.html

相关文章

Vue实现消息提示功能

1.首先要先定义消息提示的组件,在这个组件中需要实现自动关闭的功能(看自己的爱好呗),并且设置自己喜欢的样式,vue中还有可以自定义进场和退场动画的样式(就是那个v-enter-active和v-leave-active&#xff…

常见网络厂商设备默认用户名/密码大全

常见网络厂商的默认用户名/密码 01 思科 (Cisco) 设备类型:路由器、交换机、防火墙、无线控制器 默认用户名:cisco 默认密码:cisco 设备类型:网管型交换机 默认用户名:admin 默认密码:admin 02 华…

鸿蒙HarmonyOS 地图定位到当前位置 site查询等操作

应用服务Map使用 地图定位 地点查询及导航 周边查询 点位标记定义等 地图定位 前提地图已经能正常显示,若不能显示请大家参考之前的那篇如何显示地图的博文 地图相关的api 位置效果图: module.json5配置权限 "requestPermissions": [{&…

Ubuntu24.04上安装和配置MySQL8.4.3

Ubuntu24.04上安装和配置MySQL8.4.3 #MySQL 的 APT 配置工具包:https://repo.mysql.com/,最新版的就是这个了 wget https://repo.mysql.com/mysql-apt-config_0.8.33-1_all.deb#输入这条命令,然后选择OK sudo dpkg -i mysql-apt-config_0.8.33-1_all.de…

CSS3_过渡(八)

1、过渡 1.1 过渡的基本使用 在需要过渡属性的元素内开启过渡属性&#xff0c;同时设置过渡时间以保证过渡效果的出现&#xff1b; 只有值为数字或者属性能转换为数字的属性才支持过渡。 <!DOCTYPE html> <html lang"zh-CN"><head><meta chars…

高级java每日一道面试题-2024年11月12日-框架篇[SpringBoot篇]-SpringBoot中的监视器是什么?

如果有遗漏,评论区告诉我进行补充 面试官: SpringBoot中的监视器是什么? 我回答: 一、监视器的概念 在SpringBoot中&#xff0c;监视器是一种用于监视应用程序运行状态和性能的组件。它可以收集关于应用程序的各种指标和统计数据&#xff0c;并将其展示在一个可视化的仪表…

react 中 useReducer Hook 作用

一、状态管理的替代方案 1. 与 useState 对比 useState是最基本的状态管理钩子。useReducer提供了一种更可预测的状态管理方式。 2. 基本用法示例 例如&#xff1a;用于一个简单的计数器应用。 import React, { useReducer } from "react";const counterReducer…

Golang基础教程

一、go语言结构&#xff1a; 1.1.运行Hello World&#xff01; package main import "fmt" func main() {fmt.Println("Hello World&#xff01;") }二、go基础语法 2.1 fmt.Println会自动换行 package main import "fmt" func main() {fmt.Pr…