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标准库os.path包、glob包使用实例
Nov 25 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
Python 实现交换矩阵的行示例
Jun 26 Python
Python交互式图形编程的实现
Jul 25 Python
python实现知乎高颜值图片爬取
Aug 12 Python
Golang GBK转UTF-8的例子
Aug 26 Python
Python进程间通信multiprocess代码实例
Mar 18 Python
Python try except异常捕获机制原理解析
Apr 18 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
python通过函数名调用函数的几种场景
Sep 23 Python
Python基于locals返回作用域字典
Oct 17 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不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
解析php5配置使用pdo
2013/07/03 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
安装dbus-python的简要教程
2015/05/05 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
什么是python的id函数
2020/06/11 Python
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
复核员上岗演讲稿
2014/01/05 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
辩护意见书
2015/06/04 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript