一、Background
当想将相片序列合成延时摄影视频时,可能会发觉相片中缺乏一张,或者相片序列是跨时间、并不连续的,如图1所示,但PR中只有连续的相片序列能够导出。
图1 时间不连续序列
二、Method
这时常常须要将相片依照更改时间重命名,下面写了一个很简单的python脚本,理论上来说支持10000张相片以内的相片序列重命名,操作如下:
1.将相片备份(没有undo机制,以免脚本失误未能撤消)
2.将rename.exe文件装入相片文件中,双击即可重命名(不可修改名子)。如果安装过python,也可以直接双击脚本文件。
图2 操作演示
三、Code
import os
def reNameByTime(path):
mlist = []
# 获取文件名列表
files = os.listdir(path)
# 获得名称带时间戳的新文件名列表
for filename in files:
# 获得文件的最后修改时间
modifytimes = os.path.getmtime(path + filename)
filename_lower = filename.lower()
# 筛选.jpg格式
if ".jpg" in filename_lower:
mlist.append(str(int(modifytimes)) + "-" + filename) # .jpg
mlist = sorted(mlist)
# 遍历修改时间戳为序号
for i in range(len(mlist)):
# 截取获得原先的文件名
oldname = mlist[i][11:] # 切片操作,从11至后
# 将时间戳部分修改为序号,得到新的文件名
if (i + 1) < 10: # 0-9
newname = "000" + str(i + 1) + ".jpg"
elif (i + 1) > 9 and (i + 1) < 100: # 10-100
newname = "00" + str(i + 1) + ".jpg"
elif (i + 1) > 99 and (i + 1)
#如果想执行py文件,可以将后缀改为“.py”,如果想打包成exe,需要将后缀改为“.exe”
if __name__ == "__main__":
filepath = os.sys.argv[0].replace("rename.py", "")
print(os.sys.argv[0])
reNameByTime(filepath)
如果想根据其他时间进行排序:
# os.path.getatime(file) 输出文件访问时间
# os.path.getctime(file) 输出文件的创建时间
# os.path.getmtime(file) 输出文件最近修改时间
如果想对其他类型的文件进行排序,更改对应后缀名即可。
文件链接:
提取码:9cps