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文件与目录操作实例详解
Feb 22 Python
python文件名和文件路径操作实例
Sep 29 Python
Python callable()函数用法实例分析
Mar 17 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
Python如何使用内置库matplotlib绘制折线图
Feb 24 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
如何基于python把文字图片写入word文档
Jul 31 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP 数组入门教程小结
2009/05/20 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
跟老齐学Python之网站的结构
2014/10/24 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
python 数据的清理行为实例详解
2017/07/12 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
Python request操作步骤及代码实例
2020/04/13 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
入职担保书怎么写
2014/05/12 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL