pythonファイルの時間を利用して写真とビデオの名前を一括で変更します。


本論文の例では、pythonがファイル時間を利用して写真とビデオの名前を一括して変更する具体的なコードを共有しています。参考にしてください。具体的な内容は以下の通りです。
問題の説明
前節の問題を受けて、Androidとアップルの間で写真と動画を相互誘導すると、ファイル名が乱れやすくなります。

コードの実装
ファイル名の正確性を保証するために、ここでは主に写真の撮影時間と動画の修正時間を抽出して名前を変更する。

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+"---       !")
結論
最後に修正した結果は以下の通りです。

以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。