python利用文件时间批量重命名照片和视频


Posted in Python onFebruary 09, 2021

本文实例为大家分享了python利用文件时间批量重命名照片和视频的具体代码,供大家参考,具体内容如下

问题描述

承接上节的问题,在安卓和苹果间互导照片和视频还容易出现文件名混乱的问题,如下图所示。

python利用文件时间批量重命名照片和视频

代码实现

为保证文件名的准确性,这里主要提取照片的拍摄时间和视频的修改时间用于重命名,这两个时间一般是其原始时间,实现代码如下:

import os
import re
import time
import exifread

def get_file_date(filepath, format):
 '''
  获取文件的时间戳,这里主要返回视频的时间,原时间一般为修改时间
  st_atime (访问时间), st_mtime (修改时间), st_ctime(创建时间)
 '''
 statinfo = os.stat(filepath)
 temp_time = time.localtime(statinfo.st_mtime)
 return str(time.strftime(format, temp_time))

def get_exif_date(filepath):
 # 获取照片的拍摄日期,利用exifread模块
 FIELD='EXIF DateTimeOriginal'
 fd=open(filepath,'rb')
 tags=exifread.process_file(fd)
 fd.close() 

 if FIELD in tags:
  temp_time=str(tags[FIELD])  
  new_time=temp_time.replace(':','').replace(' ','_')
  return new_time

def get_filetype(basename):
 '''
 利用正则表达式判断文件后缀,照片返回0,视频返回1,其他返回2
 '''
 img_reg=r'(\.JPG|\.jpg|\.bmp|\.png)'
 vedio_reg=r'(\.mp4|\.MP4|\.MOV)'
 
 if re.search(img_reg,basename): #匹配照片
  return 0
 elif re.search(vedio_reg,basename): #匹配视频
  return 1
 else:
  return 2

if __name__ == "__main__":
 dirname = r'D:\ProgramData\Python'
 os.chdir(dirname) # 切换至当前目录
 basenames = os.listdir(dirname)
 format = '%Y%m%d_%H%M%S' # 时间格式

 for basename in basenames:
  filepath = dirname+'\\'+basename
  num=get_filetype(basename)

  if num==0:
   str_time=get_exif_date(filepath) #处理照片
   newname=str_time+os.path.splitext(basename)[1]
   os.rename(basename,newname)
   print(basename+'---照片修改成功!')   
  elif num==1:
   str_time=str(get_file_date(filepath, format)) #处理视频
   newname=str_time+os.path.splitext(basename)[1]
   os.rename(basename,newname)
   print(basename+'---视频修改成功!')
  else:
   print(basename+"---文件格式不正确!")

结论

最后修改结果如下。

python利用文件时间批量重命名照片和视频

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python输出带颜色的字符串实例
Oct 10 Python
Python编程scoketServer实现多线程同步实例代码
Jan 29 Python
python 实现数组list 添加、修改、删除的方法
Apr 04 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
深入浅析python 协程与go协程的区别
May 09 Python
Python自定义一个异常类的方法
Jun 27 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
python神经网络ResNet50模型
May 06 Python
python opencv实现图像配准与比较
Feb 09 #Python
python urllib和urllib3知识点总结
Feb 08 #Python
Python3.9.1中使用match方法详解
Feb 08 #Python
python读取excel数据并且画图的实现示例
Feb 08 #Python
Python爬取某平台短视频的方法
Feb 08 #Python
利用Python批量识别电子账单数据的方法
Feb 08 #Python
Python命令行参数argv和argparse该如何使用
Feb 08 #Python
You might like
php array_walk() 数组函数
2011/07/12 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
基于jQuery架构javascript基础体系
2011/01/01 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
node.js中watch机制详解
2014/11/17 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
2017/04/14 jQuery
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
Python 第一步 hello world
2009/09/25 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
匡威德国官网:Converse德国
2019/01/26 全球购物
计算机应用毕业生自荐信
2013/10/23 职场文书
大学生职业规划前言模板
2013/12/27 职场文书
颐和园英文导游词
2015/01/30 职场文书
计算机实训心得体会
2016/01/14 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL