python照片按時間自動分類

最近準備把近幾年手機裏面存儲的照片按年份分類存儲到硬盤裏面,不知不覺累積了4000多張照片,人工一張張分類實在是太費時間、也容易出錯。好在每一張照片的屬性裏面都記錄了拍攝時間,用python很容易就能獲取到每一張照片拍攝的年份。然後用年份建立相應的文件夾,把照片移動到對應年份的文件夾就好了。

幾點細節:

  1. 如果是用mac的“照片”軟件導出照片的話,一定要選擇導出“未修改的原片”,不然會丟失原片的拍攝時間;
  2. 實際操作的時候,有一部分重複照片,我們用emove_repetition()函數來去除重複的照片。

詳細代碼如下:

import glob
import os
import exifread
import time
import datetime
import shutil

def remove_repetition(filenames,filenames_back):
    #刪除重複的文件
    i =0
    for _ in filenames_back:
        if _.find('(1)') > 0 or _.find('(2)') > 0:
            print(_)
            os.remove(_)
            filenames.remove(_)
            i += 1
    print(i)

def TimeStampToTime(timestamp):
    #轉換時間格式
    timeStruct = time.localtime(timestamp)
    # return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct)
    return time.strftime('%Y',timeStruct)

def get_FileCreateTime(filePath):
    #獲取文件創建時間
    # filePath = unicode(filePath,'utf8')
    t = os.path.getmtime(filePath)
    return TimeStampToTime(t)

def My_main():
    #獲取當前文件夾下面的所有文件,不包含文件夾
    filenames = [x for x in glob.iglob("*.*", recursive=False)]
    filenames.remove('solve.py')
    #設置工作路徑
    curr_path = os.getcwd()
    #去除重複的文件
    filenames_back = filenames[::]
    remove_repetition(filenames, filenames_back)
    #根據文件的創建時間對文件分類
    for file in filenames:
        os.chdir(curr_path)
        year = get_FileCreateTime(file)
        if not os.path.exists(year):
            os.makedirs(year)
            print('Create '+year+' success')
        des_path = year + '/' + file
        shutil.move(file, des_path)#移動文件或文件夾

if __name__ == "__main__":
    My_main()

 

發佈了26 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章