Python如何根据照片修改时间重命名并排序详解
作者:青简 发布时间:2021-06-27 02:58:31
标签:python,重命名,排序
一、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://blog.csdn.net/weixin_41425047/article/details/116809926
0
投稿
猜你喜欢
- 大家都知道,数据库的安全性是很重要的,它直接影响到数据库的广泛应用。用户可以采用任意一种方法来保护数据库应用程序,也可以将几种方法结合起来使
- 插入排序 插入排序是这样实现的: 首先新建一个空列表,用于保存已排序的有序数列(我们称之为"有序列表")。
- 本文代码需要正确安装Python扩展库pywin32,建议下载whl文件进行离线安装。然后调用win32api的ShellExecute()
- 之前有教大家制作日历,很多小伙伴都兴奋的告诉小编自己成功了。那么我们在日历中怎么去找到我们想要的那个时间点呢?其实有点类似于查询的功能,但是
- 一、背景我们在进行代码调试时,通常使用两种方式。print 输出调试的内容或者标识通过断点调试debug但是我想知道代码的中间的每一行程序运
- 本文实例讲述了正则表达式验证IPV4地址功能。分享给大家供大家参考,具体如下:IPV4地址由4个组数字组成,每组数字之间以.分隔,每组数字的
- 本文实例为大家分享了pygame模块实现坦克大战游戏的具体代码,供大家参考,具体内容如下首先,第一步,游戏简单素材的准备。炮弹,炮弹,坦克移
- 疑问在调用socket的时候,我们会使用到listen()函数,里面有个参数叫backlog, 例如:socket.listen(5). 那
- 项目实现利用face++开发一个课堂签到的软件,实现面向摄像头即可完成记录学号、姓名和时间的签到工作。项目架构项目使用场景代码:流程代码,主
- 2009年 6月6日,空间4岁啦!与此同时Qzone月登录用户2亿,同时在线用户也突破了1000万。这是让人欢欣雀跃的数字,在空间同事眼里,
- 不知道怎么忽然想看这个,呵呵 小我的python的反shell的代码 #!/usr/bin/python # Python&nbs
- 本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作。首先,我们来明确一下本文的具体需求。现有一个
- 很多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当。相对来说,将数据装入数据库是直截了当的
- 此处收集的是一些夺人心魄的创意广告牌,巧妙的构思十分值得大家观瞻.......超人归来 superman returnsNespressos
- 训练模型时,我们并不是直接将图像送入模型,而是先将图像转换为tfrecord文件,再将tfrecord文件送入模型。为进一步理解tfreco
- 在最近一次项目有一个需求,点击按钮——异步提交——异步响应返回——根据响应返回值新开窗口。这有两个要点:异步响应之前不知道要打开窗口的URL
- Logistic Regression Classifier逻辑回归主要思想就是用最大似然概率方法构建出方程,为最大化方程,利用牛顿梯度上升
- 由于分形树具有对称性,自相似性,所以我们可以用递归来完成绘制。只要确定开始树枝长、每层树枝的减短长度和树枝分叉的角度,我们就可以把分形树画出
- 问题创建一个二叉树二叉树有限多个节点的集合,这个集合可能是:空集由一个根节点,和两棵互不相交的,分别称作左子树和右子树的二叉树组成创建二叉树
- Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文