如何以照片的拍摄时间批量重命名文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何以照片的拍摄时间批量重命名文件相关的知识,希望对你有一定的参考价值。
参考技术A 问题:iphone手机拍摄的照片或保存的图片都是以IMG_XXX命名的,如何改成以拍摄时间或修改图片时间来命名,如改为IMG_20180715_233759.JPG解决:
方式一:ReNamer
功能强大灵活的文件批量重命名工具,该程序支持包括插入、删除、移除、替换、前缀、后缀以及正则表达式等十四种重命名规则。
方式二:RenameXif
文件名样式设置了几个预设,也就有所限制;可以添加文件名前缀;无EXIF时可选择使用文件日期或忽略不处理;文件保存可选择替换原文件或另存其他目录;仅支持jpg格式的图片
方式三:根据相机JPG文件的EXIF信息批量重命名
软件名称就是这么长,功能如题。预设文件名样式,也可自定义改名规则;仅支持jpg格式的图片
方式四:导入照片时进行导入设置
iphone用数据线连接电脑后,打开“我的电脑”,找到“iPhone”图标,右键,选择“导入图片和视频”,在弹出窗口点击左下角“更多选项”,选择“文件名”,下拉菜单选择文件命名格式。
python应用之 重命名照片+照片归类
需要使用exifread库,获取照片的exif信息,来实现操作;
一、重命名照片的代码如下,可以实现将照片添加拍摄日期进行重命名操作:
import os import exifread #将路径下的图片,重命名为带日期的文件 def getExif(path): for root,dirs,files in os.walk(path,True): for file in files: old_full_file_name = os.path.join(path, file) FIELD = ‘EXIF DateTimeOriginal‘ fd = open(old_full_file_name, ‘rb‘) tags = exifread.process_file(fd) fd.close() if FIELD in tags: new_name = str(tags[FIELD]).replace(‘:‘, ‘‘)[:8]+ ‘_‘ + file new_full_file_name = os.path.join(path, new_name) tot = 1 while os.path.exists(new_full_file_name): new_full_file_name = os.path.splitext(new_full_file_name)[0] +‘_‘ + str(tot) +os.path.splitext(file)[1] tot += 1 print(old_full_file_name, " ---> ", new_full_file_name) os.rename(old_full_file_name, new_full_file_name) else: print(‘No {} found‘.format(FIELD), ‘ in: ‘, old_full_file_name) #调用函数 getExif(‘E:/test‘)
二、将照片按照 年份月份 进行归类保存的实现代码:
import os import exifread #获取文件的时间 def getdate(filename): #以二进制方式,打开指定的文件 f=open(filename,‘rb‘) #调用exifread来获取图片文件的exif信息 data=exifread.process_file(f) if data: #如果获取到data值,则进行下述相关操作 try: #获取EXIF DateTimeOriginal值,即为图片的创建时间 t=data[‘EXIF DateTimeOriginal‘] print(t) #将获取到的时间进行格式转换,并仅保留年份和月份,然后返回 return str(t).replace(":",".")[:7] except: pass #如果,未获取到图片的exif信息,则调用os.stat获取文件的系统信息 state=os.stat(filename) #将文件的修改时间格式化,并返回 return time.strftime("%Y.%m",time.localtime(state[-2])) #照片分类整理函数 def classifyPictures(path): #利用os.walk获取目录下的文件夹和文件的名称及其目录路径 for root,dirs,files in os.walk(path,True): for filename in files: #获取文件的完整路径 file=os.path.join(root,filename) #获取文件的后缀名f p,f=os.path.splitext(file) if f.lower() not in (‘.jpg‘,‘.png‘,‘.mp4‘): continue try: t=getdate(file) except Exception as e: print(e) continue moveDir=root+‘/‘+t mf=moveDir+‘/‘+filename if not os.path.exists(moveDir): os.mkdir(moveDir) #复制文件 shutil.copy2(file,mf) #文件复制后,删除文件 os.remove(file) #调用函数 classifyPictures(‘E:/movePictures‘)
注:此文参考文章
1、http://lanbing510.info/2015/09/21/ClassifyPictures.html
2、https://blog.csdn.net/LiJiancheng0614/article/details/45819873
以上是关于如何以照片的拍摄时间批量重命名文件的主要内容,如果未能解决你的问题,请参考以下文章