import os import zipfile import re import shutil def extract_zip_in_folder(folder_path): # 检查路径是否存在 if not os.path.exists(folder_path): print("路径不存在,请重新输入") return # 存储已处理过的压缩包名称(无后缀编码)和带后缀编码的文件夹路径 processed_names = {} folders_with_suffix = [] # 遍历目录下的所有文件 for item in os.listdir(folder_path): # 构建完整的文件路径 file_path = os.path.join(folder_path, item) # 检查是否为zip文件 if zipfile.is_zipfile(file_path): # 移除文件名中的后缀编码和括号 name_without_suffix = re.sub(r'(\s*[\(\(][^)]*[\)\)])', '', item) name_without_suffix = os.path.splitext(name_without_suffix)[0] # 创建对应的文件夹(如果尚未创建) extract_folder = os.path.join(folder_path, name_without_suffix) if name_without_suffix not in processed_names: os.makedirs(extract_folder, exist_ok=True) processed_names[name_without_suffix] = extract_folder # 解压zip文件到对应文件夹 with zipfile.ZipFile(file_path, 'r') as zip_ref: zip_ref.extractall(processed_names[name_without_suffix]) print(f"已解压: {item} 到 {name_without_suffix}") # 如果原始文件名包含后缀编码,记录其文件夹路径 if re.search(r'[\(\(][^)]*[\)\)]', item): folders_with_suffix.append(os.path.splitext(file_path)[0]) # 删除所有带后缀编码的文件夹 for folder in folders_with_suffix: if os.path.exists(folder): shutil.rmtree(folder) print(f"已删除文件夹: {folder}") # 用户输入路径 user_input = input("请输入目录路径: ") extract_zip_in_folder(user_input)
标签:解压,suffix,批量,MJ,without,path,folder,os,name From: https://www.cnblogs.com/zly324/p/18000849