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)