美文网首页
python照片按时间自动分类

python照片按时间自动分类

作者: LetUsGoOn | 来源:发表于2020-02-09 22:08 被阅读0次

    最近准备把近几年手机里面存储的照片按年份分类存储到硬盘里面,不知不觉累积了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()
    

    相关文章

      网友评论

          本文标题:python照片按时间自动分类

          本文链接:https://www.haomeiwen.com/subject/jbdccctx.html