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

結論

最後修改結果如下。

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: