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