场景:当我拍摄一个物体时,我会从多个角度拍摄多个图像。乘以我“拍摄”的对象数量,我可以生成大量图像。问题:摄像头生成的图像标识为“DSCN100001”、“DSCN100002”等。神秘。在
我编写了一个脚本,它将提示输入目录规范(Windows)以及一个“前缀”。脚本读取文件的创建日期和时间,并相应地重命名文件。前缀将添加到文件名的前面。所以,'DSCN100002.jpg'可以变成“FatMonkey 20110721 17:51:02”。时间细节对我来说很重要。在
脚本如下。请告诉我这是不是Python,是否写得不好,当然,是否有一个更干净-更有效的方法来做这件事。谢谢您。在
import os
import datetime
target = raw_input('Enter full directory path: ')
prefix = raw_input('Enter prefix: ')
os.chdir(target)
allfiles = os.listdir(target)
for filename in allfiles:
t = os.path.getmtime(filename)
v = datetime.datetime.fromtimestamp(t)
x = v.strftime('%Y%m%d-%H%M%S')
os.rename(filename, prefix + x +".jpg")
你的代码既漂亮又简单。我可以提出一些改进建议:
modify time
将被更改,而EXIF信息将被保留。下面是关于Python的EXIF库的讨论:Exif manipulation library for python你这样做看起来像Python。一些备选方案(不一定是建议):
您可以跳过
os.chdir(target)
并在循环中执行os.path.join(target, filename)
。在您可以做
strftime('{0}-%Y-%m-%d-%H:%M:%S.jpg'.format(prefix))
来避免字符串连接。这是我唯一能想到的。在您可以重用一个变量名,比如}。这样就可以了。在
temp_date
,而不是t
,v
,和{您可以跳过存储临时变量,只需执行以下操作:
您可以使用
os.walk()
将函数泛化为递归目录。在您可以检测文件的文件扩展名,这样它不仅对
.jpeg
s是正确的您可以确保只重命名格式为
DSCN1#####.jpeg
的文件我唯一的想法是,如果你想让电脑为你做工作,让它做更多的工作。我的假设是你要对一个物体射击几次,然后要么移动到另一个物体上,要么把另一个物体移到原地。如果是这样的话,你可以考虑根据时间戳在一起的距离对照片进行分组(也许任何超过2分钟的增量都被认为是一个新对象)。然后根据这些伪簇,可以按对象命名照片。在
可能不是你想要的,但我想我会加上这个建议。在
相关问题 更多 >
编程相关推荐