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字符串替换示例
Apr 24 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Django2.1.3 中间件使用详解
Nov 26 Python
PyQt5 多窗口连接实例
Jun 19 Python
python小程序实现刷票功能详解
Jul 17 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
pytorch 查看cuda 版本方式
Jun 23 Python
Python工程师必考的6个经典面试题
Jun 28 Python
python读取xml文件方法解析
Aug 04 Python
Jupyter Notebook 安装配置与使用详解
Jan 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
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
简单了解django缓存方式及配置
2019/07/19 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
医德医风自我评价
2014/09/19 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
销售人员管理制度
2015/08/06 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
Linux中各个目录的作用与内容
2022/06/28 Servers