# -*- coding: utf-8 -*- import sys import time import zipfile import os from datetime import datetime from colorama import Fore, Style def fake_progress_bar(): total_progress = 50 for i in range(total_progress + 1): time.sleep(0.01) # 模拟解压文件所需的时间 sys.stdout.write('\r[' + '#' * i + '-' * (total_progress - i) + ']') sys.stdout.flush() def unzip_dir(directory): # 获取当前时间 try: current_time = datetime.now() # 将时间格式化为字符串 time_str = current_time.strftime("%Y%m%d%H%M%S") # 指定包含ZIP文件的目录 # directory = 'data' # 遍历指定目录中的文件 for filename in os.listdir(directory): if filename.endswith('.zip'): file_path = os.path.join(directory, filename) with zipfile.ZipFile(file_path, 'r') as zip_ref: # 指定解压缩目标目录 extraction_path = os.path.join(directory, directory + "-" + time_str, filename) os.makedirs(extraction_path.replace(".zip", ""), exist_ok=True) # 使用tqdm进行进度显示 for info in zip_ref.infolist(): # 解决文件名编码问题 file_name = info.filename.encode('cp437').decode('gbk') with zip_ref.open(info) as source, open( os.path.join(extraction_path.replace(".zip", ""), file_name), 'wb') as target: target.write(source.read()) # 调用模拟进度函数 fake_progress_bar() print(f'解压 {filename} 到 {extraction_path.strip(".zip")}') except Exception as e: print(e) if __name__ == '__main__': while True: source_directory = input( Fore.LIGHTGREEN_EX + "===== 请输入文件名称或输入 'q' 退出 =====\n:" + Style.RESET_ALL) # 使用黄色文本 if source_directory.lower() == 'q': print("已退出!") break if not os.path.exists(source_directory): print(Fore.RED + "源目录或目标目录不存在!!!\n" + Style.RESET_ALL) # 使用红色文本 else: print("开始解压:{}".format(source_directory)) unzip_dir(source_directory) print("解压完毕!!!")
==========================================================
修改了一下!!!递归所有文件夹里面的zip文章来源:https://www.toymoban.com/news/detail-736697.html
# -*- coding: utf-8 -*- import sys import time import zipfile import os from datetime import datetime from colorama import Fore, Style def fake_progress_bar(): total_progress = 50 for i in range(total_progress + 1): time.sleep(0.01) # 模拟解压文件所需的时间 sys.stdout.write('\r[' + '#' * i + '-' * (total_progress - i) + ']') sys.stdout.flush() def unzip_dir(directory): try: # 获取当前时间 current_time = datetime.now() # 将时间格式化为字符串 time_str = current_time.strftime("%Y%m%d%H%M%S") # 遍历指定目录及其子目录中的所有ZIP文件 for root, _, files in os.walk(directory): for filename in files: if filename.endswith('.zip'): file_path = os.path.join(root, filename) with zipfile.ZipFile(file_path, 'r') as zip_ref: # 指定解压缩目标目录 extraction_path = os.path.join(root, filename + "-" + time_str) os.makedirs(extraction_path, exist_ok=True) # 使用tqdm进行进度显示 for info in zip_ref.infolist(): # 解决文件名编码问题 file_name = info.filename.encode('cp437').decode('gbk') with zip_ref.open(info) as source, open( os.path.join(extraction_path, file_name), 'wb') as target: target.write(source.read()) # 调用模拟进度函数 fake_progress_bar() print(f'解压 {filename} 到 {extraction_path}') except Exception as e: print(e) if __name__ == '__main__': while True: source_directory = input( Fore.LIGHTGREEN_EX + "===== 请输入文件夹路径或输入 'q' 退出 =====\n:" + Style.RESET_ALL) # 使用黄色文本 if source_directory.lower() == 'q': print("已退出!") break if not os.path.exists(source_directory): print(Fore.RED + "源目录或目标目录不存在!!!\n" + Style.RESET_ALL) # 使用红色文本 else: print("开始解压文件夹:{}".format(source_directory)) unzip_dir(source_directory) print("解压完毕!!!")
附件为,打包好的exe,可以直接执行。(https://download.csdn.net/download/li13148023/88492399)文章来源地址https://www.toymoban.com/news/detail-736697.html
到了这里,关于python 解压指定目录的所有zip文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!