受不了DJI的文件命名方式,自己用python写个批量改名脚本
手上有个DJI mini2无人机,飞完之后习惯把照片或视频传到电脑硬盘上保存。
但是过段时间表回头看这些照片或视频的时候都不知道是什么样时候拍的,因为这些文件名都是一个DJI前缀加一个序号。如果是通过手机保存的话就是一长串的乱七八糟的名字,比如照片是这样:Photo_(XXX)_DJI_(XXX)_jpg_(XXX)_(X)_(日期日间)_photo_original。
DJI前缀加一个序号的命名方式如果换卡后序号ID会出现重复,如果把文件保存到相同目录不小心还可能被覆盖。
长串的乱七八糟的名字虽然包含信息比较多,但信息多了就乱。
实在是受不了这些文件命名方式,而且这些都是固定写死的,不能自已设置其它命名方式。没办法,不能影响改变别人,那就自己来改变吧。于是现学现卖Python,用python写一个批量修改文件名的程序。我的DJI我来做主,把照片和视频文件都改成DJI+日期时间的命名方式,日期时间精确到秒,这样就不会出现重复。看着这样就更加清晰简洁了。
这是python程序的源代码,保存一下以免弄丢了又要重新学。
还是贴出来吧,重新敲代码也很费时间的。
rewritefile.py
import os
import time
import shutil
from pathlib import Path
from datetime import datetime
suffix_jpg = '.jpg'
suffix_mp4 = '.mp4'
curpath = 'H:\DJI\Pictures\\2021'
logstr = '--------开始--------\r\n'
logstr = logstr +datetime.now().strftime('%Y-%m-%d %H:%M:%S ') + '\r\n'
logstr = logstr + curpath +'\r\n'
fnum=0
for root, dirs, files in os.walk(curpath):
for filename in files:
cursuffix = str.lower(os.path.splitext(filename)[-1])
if ((cursuffix==suffix_jpg) or (cursuffix==suffix_mp4)):
#文件绝对路径+文件名
fullfilename=Path(curpath,filename)
#文件修改时间(非复制或移动时间)
mt=time.strftime('%Y%m%d%H%M%S',time.localtime(os.path.getmtime(str(fullfilename))))
#新文件名称
newfilename = Path(curpath, 'DJI_'+mt+cursuffix)
#如果新旧名称一样,不需要更改,跳到下一个
if (str(fullfilename) == str(newfilename)):
continue
#改名为新名称
shutil.move(str(fullfilename), str(newfilename))
#记录日志
fnum=fnum+1
logstr = logstr+ str(fnum)+ ': '+ str(filename)+' -> ' + str(newfilename) + '\r\n'
print(fnum)
logstr = logstr + '共修改文件: '+str(fnum)+ '个'+ '\r\n'
logstr = logstr +datetime.now().strftime('%Y-%m-%d %H:%M:%S ') + '\r\n'
logstr = logstr +'--------结束--------\r\n'
try:
f =open(str(Path(curpath,'rename.log')),'a+')
f.writelines(logstr)
finally:
f.close()