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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章