Mic*_*eno 6 python rename date file creation
场景:当我拍摄物体时,我会从多个角度拍摄多张图像.乘以我"拍摄"的对象数量,我可以生成大量图像.问题:相机生成标识为"DSCN100001","DSCN100002"等的图像.隐秘.
我整理了一个脚本,它将提示目录规范(Windows),以及"前缀".该脚本读取文件的创建日期和时间,并相应地重命名该文件.前缀将添加到文件名的前面.所以,'DSCN100002.jpg'可以成为"FatMonkey 20110721 17:51:02".时间细节对我来说对于年表来说很重要.
该脚本如下.请告诉我它是否是Pythonic,是否写得不好,当然,是否有更清洁 - 更有效的方法.谢谢.
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")
Run Code Online (Sandbox Code Playgroud)
你正在做的事情看起来像Pythonic.一些替代方案(不一定是建议):
你可以在循环中跳过os.chdir(target)并执行os.path.join(target, filename).
你可以做到strftime('{0}-%Y-%m-%d-%H:%M:%S.jpg'.format(prefix))避免字符串连接.这是我唯一推荐的.
你可以重复使用一个变量名状temp_date来代替t,v和x.这没关系.
您可以跳过存储临时变量,只需:
for filename in os.listdir(target):
os.rename(filename, datetime.fromtimestamp(
os.path.getmtime(filename)).strftime(
'{0}-%Y-%m-%d-%H:%M:%S.jpeg'.format(prefix)))
Run Code Online (Sandbox Code Playgroud)
您可以通过使用来概括您的函数以用于递归目录os.walk().
您可以检测文件的文件扩展名,这样它就不仅仅适用于.jpegs.
您可以确保只重命名了表单的文件 DSCN1#####.jpeg