前言
随着日常外出拍景、扫街次数越来越多,拍摄后难免会删除废片,相机自带的照片序号变得断断续续,对强迫症来说及其不友好;尤其是,当照片编号达到数字阈值后,相机会自动新建文件夹并从头计数,后期翻看、整理、归档相册时十分混乱,手动改文件名耗时又低效。
为此分享一款 Python 批量重命名脚本,可统一读取目录内所有DSC开头的照片,按顺序重新编排文件名,一键规整相册文件,方便后期归档与查找。
脚本简要说明
该 Python 脚本仅针对尼康相机导出的DSC_开头照片文件:
自动识别脚本所在文件夹,区分打包 exe 与源码运行环境;
只筛选所有 DSC_前缀图片,按原文件名排序;如若其他文件名,请在代码区块中自行调整。
通过START_NUM自定义起始数字,统一重命名标准数字编号;
无需填写文件目录,直接在需要调整的目录下运行即可。
脚本
import os
import sys
def batch_rename_from_custom_number(start_number):
# 1. 自动获取脚本当前所在的文件夹路径
if getattr(sys, "frozen", False):
current_folder = os.path.dirname(sys.executable)
else:
current_folder = os.path.dirname(os.path.abspath(__file__))
script_name = os.path.basename(__file__)
try:
files = os.listdir(current_folder)
except Exception as e:
print(f"无法读取当前文件夹: {e}")
return
# 2. 过滤出以 'DSC_' 开头的文件,并排除脚本自身
img_files = [
f
for f in files
if f.upper().startswith("DSC_") and f != script_name
]
# 3. 按照原文件名排序
img_files.sort()
if not img_files:
print(f"在当前路径下没有找到符合 'DSC_' 开头的文件!")
return
print(f"当前路径:{current_folder}")
print(
f"共找到 {len(img_files)} 个文件,准备从 DSC_{start_number:04d} 开始顺次重命名...\n"
)
# 4. 核心:通过 start=start_number 让编号从指定的数字开始
for index, old_name in enumerate(img_files, start=start_number):
name_part, ext_part = os.path.splitext(old_name)
# 生成新名字,:04d 保持 4 位数字格式
new_name = f"DSC_{index:04d}{ext_part}"
old_path = os.path.join(current_folder, old_name)
new_path = os.path.join(current_folder, new_name)
try:
os.rename(old_path, new_path)
print(f" 成功: {old_name} --> {new_name}")
except Exception as e:
print(f" 失败: {old_name} 出错: {e}")
print("\n所有操作已完成!")
input("\n按下回车键退出...")
if __name__ == "__main__":
# 你想从哪个数字开始,就在这里改
# 默认设置成 1,会自动生成 0001, 0002, 0003...
START_NUM = 1
batch_rename_from_custom_number(START_NUM)效果图



评论