From 6816406e7291e004e4b63d0d75d431e09720ee52 Mon Sep 17 00:00:00 2001 From: Shuming Liu Date: Tue, 31 Mar 2026 16:46:22 +0800 Subject: [PATCH] save a version --- server/file_association.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/server/file_association.py b/server/file_association.py index 4beffdb..b39f682 100644 --- a/server/file_association.py +++ b/server/file_association.py @@ -49,7 +49,21 @@ def extract_all_zips( extract_dir.mkdir(parents=True, exist_ok=True) with zipfile.ZipFile(zip_file, 'r') as zip_ref: - zip_ref.extractall(extract_dir) + # 解压所有文件并保留原始时间戳 + for member in zip_ref.infolist(): + # 解压文件 + zip_ref.extract(member, extract_dir) + + # 获取解压后的文件路径 + member_path = extract_dir / member.filename + + # 如果文件存在,设置时间戳 + if member_path.exists(): + # 将 ZipInfo 的日期时间转换为时间戳 + date_time = datetime(*member.date_time[:5]) + timestamp = date_time.timestamp() + # 设置访问时间和修改时间 + os.utime(member_path, (timestamp, timestamp)) print(f"✓ 已解压:{zip_file.name}") results.append(extract_dir) @@ -202,10 +216,14 @@ def get_files_with_times(folder: Path) -> List[Tuple[Path, datetime]]: files = [] for f in folder.iterdir(): if f.is_file(): - ctime = datetime.fromtimestamp(f.stat().st_ctime) + stat_info = f.stat() + # macOS 使用 st_birthtime 作为创建时间,其他系统使用 st_ctime + try: + ctime = datetime.fromtimestamp(stat_info.st_birthtime) + except AttributeError: + ctime = datetime.fromtimestamp(stat_info.st_ctime) files.append((f, ctime)) files.sort(key=lambda x: x[1]) - print(files) return files @@ -219,11 +237,10 @@ def build_file_associations( twole_files = get_files_with_times(twole_folder) zxxk_files = get_files_with_times(zxxk_folder) - + print("******************",twole_files[0],"******************") for i, content in enumerate(word_content): # 按 \t 分割成段 parts = content.split('\t') - if len(parts) < 6: continue