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网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
Python写的一个定时重跑获取数据库数据
Dec 28 Python
Python实现的桶排序算法示例
Nov 29 Python
Python代码实现KNN算法
Dec 20 Python
tensorflow实现逻辑回归模型
Sep 08 Python
Python根据服务获取端口号的方法
Sep 25 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
深入分析python 排序
Aug 24 Python
python 中的jieba分词库
Nov 23 Python
Pytorch中expand()的使用(扩展某个维度)
Jul 15 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制作的意见反馈表源码
2007/03/11 PHP
木翼下载系统中说明的PHP安全配置方法
2007/06/16 PHP
php中将网址转换为超链接的函数
2011/09/02 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php查询whois信息的方法
2015/06/08 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
在Python中使用模块的教程
2015/04/27 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
详解python运行三种方式
2019/05/13 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
小学生自我评价范例
2013/09/24 职场文书
教师评优事迹材料
2014/01/10 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
大学军训感言800字
2014/02/27 职场文书
医院保洁员管理制度
2015/08/05 职场文书
初中英语教学随笔
2015/08/15 职场文书
《自己去吧》教学反思
2016/02/16 职场文书