批量重命名Apple Photos导出照片时序号与实际顺序不符求助
批量重命名照片序号与实际顺序不匹配的解决办法
问题原因
os.listdir()返回的文件顺序由文件系统存储逻辑决定,和你在文件夹中看到的排序(比如按拍摄时间、名称排序)完全无关,这就是重命名后序号和实际顺序不匹配的核心原因。
解决方案
按照片拍摄时间排序重命名(推荐)
Apple Photos导出的照片,其创建时间(macOS)/修改时间通常对应拍摄时间,以此排序能保证序号和照片实际顺序一致。
修正后的Python代码:
import os data_dir_path = "/path" # 筛选出所有jpg文件,避免误操作其他类型文件 photo_files = [file for file in os.listdir(data_dir_path) if file.lower().endswith(".jpg")] # 按文件创建时间(macOS下对应拍摄时间)升序排序 # 若需按修改时间排序,替换为os.path.getmtime photo_files.sort(key=lambda f: os.path.getbirthtime(os.path.join(data_dir_path, f))) # 从1开始编号,更符合日常习惯 for idx, filename in enumerate(photo_files, start=1): new_filename = f"HRC-{idx}.jpg" src_path = os.path.join(data_dir_path, filename) dst_path = os.path.join(data_dir_path, new_filename) os.rename(src_path, dst_path)
关键说明
- 操作前务必备份照片:重命名操作不可逆,先复制一份照片到其他位置避免数据丢失
- 序号起始值:
enumerate的start=1参数让编号从1开始,若需要从0开始可删除该参数 - 排序逻辑:如果你的文件夹排序是按原文件名自然排序,可改用自然排序方法,但拍摄时间排序更适合照片类文件,结果更可靠
内容的提问来源于stack exchange,提问作者vitry
相关产品推荐
相关产品推荐

