一、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) <
1000:
# 100-1000
-
newname =
"0" + str(i +
1) +
".jpg"
-
else:
-
newname = str(i +
1) +
".jpg"
# 1000 - 9999
-
-
# print(newname, oldname)
-
-
# 重命名文件,按修改时间排序并加序号前缀
-
os.rename(path + oldname, path + newname)
-
-
#如果想执行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) 输出文件最近修改时间
如果想对其他类型的文件进行排序,更改对应后缀名即可。
文件链接:https://pan.baidu.com/s/1LagM8NDw7PT4nkxWAkJLZw
提取码:9cps
转载:https://blog.csdn.net/weixin_41425047/article/details/116809926