continue....

This commit is contained in:
2026-04-05 16:39:07 +08:00
parent e12f34ed5d
commit 40d7953e3a

View File

@@ -15,7 +15,6 @@ from datetime import datetime
import time import time
import re import re
import shutil import shutil
import shutil
def clear_directory(dir_path: Path) -> None: def clear_directory(dir_path: Path) -> None:
@@ -436,40 +435,40 @@ def main():
print(f"{source_dir} 中未发现 zip 文件") print(f"{source_dir} 中未发现 zip 文件")
return return
# 清空 data 目录
clear_directory(data_dir)
print(f"找到 {len(zip_files)} 个压缩文件,开始批量处理...") print(f"找到 {len(zip_files)} 个压缩文件,开始批量处理...")
success_count = 0 success_count = 0
fail_count = 0 fail_count = 0
for zip_file in zip_files: for zip_file in zip_files:
print(f"\n【开始处理】{zip_file.name}") print(f"\n【开始处理】{zip_file.name}")
# 清空 data 目录
clear_directory(data_dir)
# 清空当前 zip 文件的提取目录
extract_dir = data_dir / zip_file.stem
if extract_dir.exists():
clear_directory(extract_dir)
try: try:
# 先提取所有文件 # 先提取所有文件
with zipfile.ZipFile(zip_file, 'r') as zip_ref: with zipfile.ZipFile(zip_file, 'r') as zip_ref:
zip_ref.extractall(data_dir) zip_ref.extractall(data_dir)
IsdirectorExtracted = False
extract_dir = data_dir / zip_file.stem
# 然后遍历所有成员,设置时间戳 # 然后遍历所有成员,设置时间戳
with zipfile.ZipFile(zip_file, 'r') as zip_ref: with zipfile.ZipFile(zip_file, 'r') as zip_ref:
for member in zip_ref.infolist(): for member in zip_ref.infolist():
# 构建正确的文件路径 - 先获取解压后的实际路径 # 计算解压后的实际路径
# 解压后,文件可能在 data_dir/zip_file.stem/ 目录下
# 或者在 data_dir/ 下(如果 zip 内部没有额外的目录层)
base_extract_path = data_dir / zip_file.stem base_extract_path = data_dir / zip_file.stem
if member.filename.startswith(zip_file.stem + '/'):
# 文件路径包含 zip 文件名前缀 # 如果 member.filename 以 zip_file.stem/开头,需要先去掉这个前缀
member_path = base_extract_path / member.filename[len(zip_file.stem) + 1:] if member.filename.startswith(zip_file.stem + '/') or member.filename.startswith(zip_file.stem + os.sep):
elif member.filename.startswith(zip_file.stem): relative_path = member.filename[len(zip_file.stem) + 1:]
# 文件路径直接以 zip 文件名开头 member_path = base_extract_path / relative_path
member_path = base_extract_path / member.filename[len(zip_file.stem):].lstrip('/')
else: else:
# 文件路径不包含前缀 # 否则直接在 base_extract_path 下查找
member_path = base_extract_path / member.filename member_path = data_dir / member.filename
IsdirectorExtracted = True
# 如果路径存在,设置时间戳 # 如果路径存在,设置时间戳
if member_path.exists(): if member_path.exists():
@@ -479,6 +478,8 @@ def main():
os.utime(member_path, (timestamp, timestamp)) os.utime(member_path, (timestamp, timestamp))
except Exception: except Exception:
pass pass
if IsdirectorExtracted:
extract_dir = data_dir
# 检查是否多了一层目录 # 检查是否多了一层目录
inner_dir = extract_dir / zip_file.stem inner_dir = extract_dir / zip_file.stem
@@ -511,6 +512,14 @@ def main():
if not twole_folder.exists() or not zxxk_folder.exists(): if not twole_folder.exists() or not zxxk_folder.exists():
print("❌ 文件夹不存在,请先解压文件") print("❌ 文件夹不存在,请先解压文件")
# 将失败的原始压缩包拷贝到本程序所在目录的 ee 子目录
script_dir = Path(__file__).parent
ee_dir = script_dir / "ee"
ee_dir.mkdir(exist_ok=True)
dest_file = ee_dir / zip_file.name
import shutil
shutil.copy2(zip_file, dest_file)
print(f" 已拷贝失败文件到:{dest_file}")
fail_count += 1 fail_count += 1
continue continue