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+"---文件格式不正确!")

结论

最后修改结果如下。

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

(0)

相关推荐

  • python实现批量文件重命名

    本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下 问题描述 最近遇到朋友求助,如何将大量文件名前面的某些字符删除. 即将图中文件前的编号删除. Python实现 用到了python中的os模块,os模块中的rename方法可以实现对文件的重命名 import os #path为批量文件的文件夹的路径 path = 'd:\\renamefolder' #文件夹中所有文件的文件名 file_names = os.listdir(path) #外循环遍历所有文件名,

  • Python 文件重命名工具代码

    复制代码 代码如下: #Filename:brn.py #Description: batch replace certain words in file names #Use to bat rename the file in a dir(modify the suffix from a to b) for Windows Vista OS import sys import os import fnmatch import re #parse params p=input("Please i

  • Python os.rename() 重命名目录和文件的示例

    概述 os.rename() 方法用于重命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError. 语法 rename()方法语法格式如下: os.rename(src, dst) 参数 src – 要修改的目录名 dst – 修改后的目录名 返回值 该方法没有返回值 该方法 可以重命名 文件 和目录, 如果 src参数 对应文件或目录,不存在,会保错, 如果 dst 参数 对应文件或目录,已经存在,也会报错 实验方法: 在当前目录下,新建一个目录,名称为:te

  • python对指定目录下文件进行批量重命名的方法

    本文实例讲述了python对指定目录下文件进行批量重命名的方法.分享给大家供大家参考.具体如下: 这段python代码可对c:\temp目录下的所有文件名为"scroll_1"文件替换为"scroll_00" import os path = 'c:\\temp' for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True: newname = file.replace

  • 用python实现批量重命名文件的代码

    下面是最终代码 (windows下实现的) 复制代码 代码如下: # -*- coding: cp936 -*- import os path = 'D:\\图片\\' for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True: if file.find('.')<0: newname=file+'rsfdjndk.jpg' os.rename(os.path.join(path,file),os

  • bat和python批量重命名文件的实现代码

    最近从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),现在我也下载完了这些文件,也有这些文件的列表,就是不能一个一个的把文件给重命名吧所以从网上找了这几个脚本. 一.使用bat脚本(windows系统默认可用) 打开记事本,将这些代码写入记事本,另存为xx.bat文件(注意后缀名,很多小白保存成了xx.bat.txt,因为txt是隐藏的,以为不行) @echo off for /r "d:\pdf" %%a in (*.pdf) do ( for /f &qu

  • Python批量重命名同一文件夹下文件的方法

    本文实例讲述了Python批量重命名同一文件夹下文件的方法.分享给大家供大家参考.具体分析如下: 朋友发了一个文件夹过来,里面的图片都以 .tmp 为后缀. 手工修改的话工作量太大.故写了一个 Python 脚本进行批量重命名. 对 Python 的标准库不熟,只能边查资料,或者 help() 边写代码. 三行代码就可以解决这一问题. 不过没有捕获异常.不能迭代同一目录下的所有文件. 代码如下: import os for file in os.listdir("."): if os.

  • python 实现对文件夹中的图像连续重命名方法

    python实现的对文件夹中的图像进行连续的重命名方法: import os class BatchRename(): def __init__(self): self.path = 'C:/Users/zxl/Desktop/tr' def rename(self): filelist = os.listdir(self.path) total_num = len(filelist) i = 101 for item in filelist: if item.endswith('.jpg'):

  • python实现图片文件批量重命名

    本文实例为大家分享了python实现文件批量重命名的具体代码,供大家参考,具体内容如下 代码: # -*- coding:utf-8 -*- import os class ImageRename(): def __init__(self): self.path = 'D:/xpu/paper/plate_data' def rename(self): filelist = os.listdir(self.path) total_num = len(filelist) i = 0 for ite

  • python根据list重命名文件夹里的所有文件实例

    如下所示: # coding = utf-8 import os path = "D:\\chunyu"#想要重命名所有文件存放的文件夹 filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹) list = [] fileopen = open('D:\chunyu.txt','r')#之后想要重命名成的所有名字的集合,这个名字为除去文件扩展名的文件名 i =0 for file in filelist: print(file) for line

随机推荐