多層解壓p

import os
import subprocess
from tqdm import tqdm
def extract_compressed_file(file_path, password=None, extract_path="."):"""解压单个压缩文件到指定目录,并实时显示解压进度Parameters:- file_path (str): 压缩文件的完整路径- password (str): 解压密码,默认为None- extract_path (str): 解压文件的目标路径,默认为当前目录"""try:command = ["7z", "x", file_path, f"-o{extract_path}"]if password:command.append(f"-p{password}")process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)pbar = tqdm(total=os.path.getsize(file_path), unit='B', unit_scale=True, desc=f"解压 {os.path.basename(file_path)}")for line in process.stdout:pbar.update(len(line))process.wait()pbar.close()if process.returncode == 0:print(f"成功解压:{file_path}")print(f"解压返回路径:{extract_path}")return extract_path  # 返回解压后的路径else:error_output = process.stderr.read().decode('utf-8')print(f"解压失败:{file_path}")print(f"错误信息:{error_output}")return Noneexcept Exception as e:print(f"解压失败:{file_path}, 错误:{e}")return None
def find_and_extract_compressed_files(root_dir, password=None):"""遍历目录及子目录,解压所有压缩文件(支持7z, ZIP, RAR, XZ, BZIP2, GZIP, TAR, WIM格式,请自行在下面file.endswith('.xx')新增自己需要的格式)注意:伪装成其他格式的压缩文件也可以解压,请确认是压缩文件就行,比如最近论坛的部分压缩文件以pdf结尾伪装,所以可以加上file.endswith('.pdf')以解压缩Parameters:- root_dir (str): 要遍历的根目录路径- password (str): 解压密码,默认为None"""for root, dirs, files in os.walk(root_dir):initial_dir = rootfor file in files:if file.endswith('.7z') or file.endswith('.rar') or file.endswith('.zip') or file.endswith('.tar') or file.endswith('.pdf'):file_path = os.path.join(root, file)extract_path = os.path.splitext(file_path)[0]last_extracted_path = extract_compressed_file(file_path, password=password, extract_path=extract_path)if last_extracted_path:find_and_extract_compressed_files(last_extracted_path, password=password)
if __name__ == "__main__":root_directory = input("请输入要遍历的目录路径: ")password = input("请输入解压密码(如果没有密码,请直接按回车键): ")if password.strip() == "":password = Nonefind_and_extract_compressed_files(root_directory, password)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/796187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FreeRtos入门-7 中断管理

中断管理 中断管理相比非中断的优势 1,简洁和效率。 2,同步和安全。提供了中断安全的操作,确保在中断上下文中执行时不会引发竞态条件或破坏系统状态。 3,通过配置中断的优先级,可以确保高优先级的中断能够立即响应…

配置Mysql集群主从复制报错

配置Mysql集群主从复制报错: 我在master创建了一个数据库(demo_ds_0),然后又快速删除了。然后又再次创建了 demo_ds_0, 发现 slave 数据库没有将 demo_ds_0 库同步过来。 后面在 slave 数据库中执行 show slave status 发现 SLave_IO_Running 字段是 …

浏览器控制台(console)中JS的常用方法:获取元素、鼠标点击、键盘输入等

文章目录 1.获取元素的常用方法(1)获取tabs列表(国内版/国际版)2.模拟输入框input的输入3.模拟点击click()1.获取元素的常用方法 // 1 根据元素IDlet img = document.getElementById("m1");// 2 根据元素标签--元素列表let div

OpenHarmony开发-系统烧录

本文详细介绍了烧录OpenHarmony系统到开发板的操作流程。从基础的硬件准备和软件环境设置入手,详细说明了如何配置开发环境、构建系统镜像等过程,详细描述了烧录过程中的关键步骤,以及如何使用专用工具将OpenHarmony系统镜像传输到开发板。同…

蓝桥杯每日一题:公约数(gcd)

题目描述: 给定两个正整数 a 和 b。 你需要回答 q 个询问。 每个询问给定两个整数 l,r,你需要找到最大的整数 x,满足: x 是 a和 b 的公约数。l≤x≤r。 输入格式 第一行包含两个整数 a,b。 第二行包含一个整数 q。 接下来…

力扣Lc29---- 541. 反转字符串 II(java版)-2024年4月06日

1.题目描述 2.知识点 (1)执行步骤如下: 初始化 s “abcdefg” 和 k 2 将字符串分割成长度为 2k 4 的块。 对每个块中的前 k 2 个字符进行反转。 执行过程 1)第一次循环(i 0) start 0 end Math.min(0…

当下鸿蒙开发热潮,大前端开发有没有必要搞!!!

鸿蒙到底好不好?要不要搞? Android开发反正目前工作感觉也不好找,即便是上海这样的大城市也难搞,人员挺饱和的。而且年前裁员的公司那么多,再看自己,年龄不是优势;技术不是优势,想想…

前端进阶特训营-班会

程邵非(winter):javascript专家 夏然(全栈然叔):Vue3.0 工程化--大项目,工程化有专门团队。 杨涛(村长):Vue3.0 架构师 高少云(bubucuo):React18 课程设计 1.前端基础-程邵非 建立前端体系架构 重新理解JS,CSS,HTML的底层原理 理解前端工程师…

16 - 程序计数器和内存

---- 整理自B站UP主 踌躇月光 的视频 1. 程序计数器 程序计数器需要支持后续程序的运行,需要支持跳转,所以需要一个预置数的功能。我们在 ALU 前面加上个寄存器。 2. 内存控制器 3. 通过程序计数器读取内存 辅助工具 4. 实验工程 【16 - 程序计数器和…

【C++】红黑树讲解及实现

前言: AVL树与红黑树相似,都是一种平衡二叉搜索树,但是AVL树的平衡要求太严格,如果要对AVL树做一些结构修改的操作性能会非常低下,比如:插入时要维护其绝对平衡,旋转的次数比较多,更…

降低笔记本电脑噪音的七种方法,看下有没有适合你的

序言 无论是玩游戏、浏览网络还是做严肃的工作,差不多都有这么一台笔记本电脑,它有足够的处理能力来处理几乎任何事情。不幸的是,它可能会变得非常大声,但有办法来遏制这种噪音。 清洁通风口和风扇,并使用硬表面 如果你的笔记本电脑现在比过去运行同样的软件时声音更大…

继承 多态 向上转型 向下转型

一、什么是继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。当然,如果在父类中拥有私有属性(private修饰)&#xff…

【MySQL基础】MySQL基本操作详解

系列文章目录 第1篇:【MySQL基础】MySQL介绍及安装 第2篇:【MySQL基础】MySQL基本操作详解 文章目录 ✍1,数据库操作     🔍1.1,查看数据库     🔍1.2,创建数据库     🔍1.3,选择数据库    …

腾讯云添加域名后不生效

问题原因 添加域名后不生效可能是因为没有加CDN域名解析 解决步骤

算法| ss 滑动窗口

3.无重复字符的最长子串209.长度最小的子数组1052.爱生气的书店老板 水果成篮 删除子数组的最大得分 3.无重复字符的最长子串 /*** param {string} s* return {number}*/ // 思路 // 滑窗三问三答 // 右指针是谁 // 左指针什么时候移动 偏爱while循环 // 结果更新 var leng…

MacOS Docker 可视化面板 Portainer

一、简介 Portainer 是一个可视化的容器镜像图形管理工具,使用 Portainer 可以轻松构建、管理和维护Docker 环境。 而且完全免费(portainer-ce 是免费的,portainer-ee 是需要授权的,今天安装的是 portainer-ce 版本)&…

leetcode599-Minimum Index Sum of Two Lists

题目 假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假…

Java多态练习2

设计金融产品类Financial,属性包括产品名称、产品介绍、起投金额、产品期限(int)、年化收益(百分数);方法包括发布、截止、投资。 设计金融产品类子类: 基金产品Fund,继承金融产品类…

Jenkins (三) - 拉取编译

Jenkins (三) - 拉取编译 通过Jenkins平台 git 拉取github上项目,通过maven编译并打包。 Jenkins 安装 git 插件 Manager Jenkins -> Plugins -> Available plugins -> Git 打包编译检验 FressStyle 风格编译 New Item输入 item name Spring-Cloud-1…

LeetCode---127双周赛

题目列表 3095. 或值至少 K 的最短子数组 I 3096. 得到更多分数的最少关卡数目 3097. 或值至少为 K 的最短子数组 II 3098. 求出所有子序列的能量和 一、或值至少k的最短子数组I&II 暴力的做法大家都会,这里就不说了,下面我们来看看如何进行优化…