1. 程式人生 > 其它 >利用檔案時間批量重新命名照片和視訊

利用檔案時間批量重新命名照片和視訊

技術標籤: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+"---檔案格式不正確!")

結論

最後修改結果如下。
在這裡插入圖片描述