[经典] 使用Python批量重命名iPhone拍摄的照片-按照拍摄时间重命名
#!/usr/bin/env python # -*- coding: utf-8 -*-''' 批量修改照片文件名称的Python脚本程序。 遍历指定目录(含子目录)的照片文件,根据拍照时间将照片文件名修改为以下格式: 20140315_091230.jpg (%Y%m%d_%H%M%S)由于文件名已经精确到秒,理论上重名的概率非常小。 如果需要考虑到重名的问题,可以对本程序进行进一步的优化。!该程序需要安装exifread模块,否则无法使用。 例如,Linux/Mac OS X下命令行安装该模块:sudo pip install exifread '''import os import stat import time import exifread MY_DATE_FORMAT = '%Y%m%d_%H%M%S'SUFFIX_FILTER = [ '.jpg' , '.png' , '.mpg' , '.mp4' , '.thm' , '.bmp' , '.jpeg' , '.avi' , '.mov' ] DELETE_FILES = [ 'thumbs.db' , 'sample.dat' ]def isFormatedFileName ( filename ) :#判断是否已经是格式化过的文件名try :filename_nopath = os.path . basename ( filename )f , e = os.path . splitext ( filename_nopath )time . strptime ( f , MY_DATE_FORMAT )return Trueexcept ValueError :return Falsedef isTargetedFileType ( filename ) :#根据文件扩展名,判断是否是需要处理的文件类型filename_nopath = os.path . basename ( filename )f , e = os.path . splitext ( filename_nopath )if e . lower ( ) in SUFFIX_FILTER :return Trueelse :return Falsedef isDeleteFile ( filename ) :#判断是否是指定要删除的文件filename_nopath = os.path . basename ( filename )if filename_nopath . lower ( ) in DELETE_FILES :return Trueelse :return Falsedef generateNewFileName ( filename ) :#根据照片的拍照时间生成新的文件名(如果获取不到拍照时间,则使用文件的创建时间)try :if os.path . isfile ( filename ) :fd = open ( filename , 'rb' )else :raise "[%s] is not a file!\n" % filenameexcept :raise "unopen file[%s]\n" % filenamedata = exifread . process_file ( fd )if data :#取得照片的拍摄日期try :t = data [ 'EXIF DateTimeOriginal' ]#转换成 yyyymmdd_hhmmss的格式dateStr = str ( t ) . replace ( ":" , "" ) [ : 10 ] + "_" + str ( t ) [ 11 : ] . replace ( ":" , "" )except :pass#如果没有取得exif信息,则用图像文件的创建日期作为拍摄日期state = os . stat ( filename )dateStr = time . strftime ( MY_DATE_FORMAT , time . localtime ( state [ - 2 ] ) )dirname = os.path . dirname ( filename )filename_nopath = os.path . basename ( filename )f , e = os.path . splitext ( filename_nopath )newFileName = os.path . join ( dirname , dateStr + e ) . lower ( )return newFileNamedef scandir ( startdir ) :#遍历指定目录以及子目录,对满足条件的文件进行改名或删除处理 os . chdir ( startdir )for obj in os . listdir ( os . curdir ) :if os.path . isfile ( obj ) :if isTargetedFileType ( obj ) and isFormatedFileName ( obj ) == False :#对满足过滤条件的文件进行改名处理newFileName = generateNewFileName ( obj )print "rename [%s] => [%s]" % ( obj , newFileName )os . rename ( obj , newFileName )elif isDeleteFile ( obj ) :#删除制定的文件print "delete [%s]: " % objos . remove ( obj )else :passif os.path . isdir ( obj ) :scandir ( obj )os . chdir ( os . pardir )if __name__ == "__main__" :path = "/Users/abc/www/img"scandir ( path )
转载于:https://www.cnblogs.com/rxbook/p/7509530.html
[经典] 使用Python批量重命名iPhone拍摄的照片-按照拍摄时间重命名相关推荐
- Python批量重命名iPhone、微信照片,视频-按照拍摄时间重命名
平时用iphone手机,也用微信,经常从微信保存一些照片,视频到手机里.时间长了照片比较多,分不清是哪天拍摄的,或者保存的,所以平时我喜欢用时间命名照片,视频. 最近和我女朋友分手了,在一起的一些合照 ...
- python批量重命名指定目录下所有文件的后缀名
python批量重命名指定目录下所有文件的后缀名 有个需求,需要把某个文件夹下所有后缀名为.abc的更改为.xyz; #批量重命名指定目录下面所有文件的后缀名. word_dir为需要更改后缀的文件夹 ...
- python下载文件并改名_第46p,8行代码,用Python批量重命名文件
大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...
- 使用python批量给图片重命名
简单的python程序,可以对图片以数字的顺序,进行批量的重命名 代码如下: #批量修改文件名,默认操作为将图片按1,2,3,,,顺序重命名import ospath_in = "./iu& ...
- Python批量重命名文件
Python批量重命名文件 修改出处 有积分的小伙伴支持一下下载链接 对图片文件名重命名时看到了很有用的代码,针对本人重命名需要,做出如下修改: n=count + int(startNumber) ...
- Python批量重命名图片
Python批量重命名图片 # -*- coding:utf8 -*-import osclass BatchRename():'''批量重命名文件夹中的图片文件'''def __init__(sel ...
- python批量改名微信视频软件,python利用文件时间批量重命名照片和视频
本文实例为大家分享了python利用文件时间批量重命名照片和视频的具体代码,供大家参考,具体内容如下 问题描述 承接上节的问题,在安卓和苹果间互导照片和视频还容易出现文件名混乱的问题,如下图所示. 代 ...
- Python批量重命名考研资料
Python批量重命名文件 零.问题引入 最近网上找了一些高等数学基础课程,当然免费的肯定少不了广告,我下载的就是下面这个样子 简直不能忍受,所以现在开始来重命名这些文件,可是现在下载了60多集,一个 ...
- 天天向上续 python代码_第46p,8行代码,用Python批量重命名文件
大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第46篇文章,第二阶段的课程:Python基础知识:小案例之用Python批量重命名文件. 学习本课程,建议先看一遍:[计算机基础知 ...
最新文章
- 返回指针值的函数(1)
- iOS核心动画高级技术(十四) 图像IO
- 何时使用Delegate,何时使用Interface
- C#通过COM组件操作IE浏览器(二):使用IHTMLDocument3完成登录
- PHP和Mysql处理IP地址
- How to use fb.data.query to get friends info?
- 用js实现鼠标点击爱心特效
- jquery-weui滚动加载问题解决
- 四大领域全面发力,腾讯云构筑全链路开发者服务体系
- SpringMVC 异常的处理
- 【车道线检测与寻迹】2月17日 车道线检测carry边缘检测+Hough哈夫变换法
- CCleaner v5.83.9050版,免费的系统优化和隐私保护工具
- 计算机组成原理(第3版)唐朔飞著 知识点总结
- 信息系统项目管理重点:供应链管理(SCM)
- 您的CPU支持该TensorFlow二进制文件未编译为使用的指令:AVX AVX2
- wps右下角弹窗广告(WPS购物或叫WPS热点)彻底关闭
- 自然语言处理3 -- 词性标注
- Spring boot 集成 WebService(简单使用、文件上传下载)
- IOS微信端touchstart事件失效处理
- MySql重装出错, Staring the server出错,日志3306 with user root with no password...
热门文章
- abstract 的基本概念和用法
- android 输入法确定键,android 改变输入法enter键文字 为搜索 下一个 以及前往
- 夏津一中2021高考成绩查询,2021德州市地区高考成绩排名查询,德州市高考各高中成绩喜报榜单...
- 【毕业设计】后端实现——各个支付平台保存的账单分析与导入合并
- varnish2.04配置
- mui从iframe页面跳转到应用根目录页面
- 包含重复元素的全排列
- linux 5.5安装万兆网卡驱动,CentOS下安装网卡驱动
- 2021年中国内地城市地铁客流量排行榜:北上广深日均客运量超500万人次,深圳客流强度最大(附年榜TOP43详单)
- 自相矛盾:一个进程可以自成死锁么?