自学Python:按照日期自动分类照片

Python040

自学Python:按照日期自动分类照片,第1张

你电脑里是不是拍了很多照片,没有来得及分类。如果按照拍摄日期来分类,可以高效的查看照片。下面就用Python编写程序,根据图片的拍摄日期创建当日的文件夹来存放图片。

下面是详细的脚本:

from pathlib import Path

from datetime import datetime

from exifread import process_file

flq = Path('d:\\11\\') #分类前文件存放的目录

flh = Path('d:\\22\\分类后的图片\\') #分类后文件存放的目录

if not flh.exists():

    flh.mkdir(parents=True)

file_list = list(flq.glob('*.jpg')) #照片的格式为jpg

for i in file_list:

    with open(i, 'rb') as f:

        tags = process_file(f, details=False)

    if 'EXIF DateTimeOriginal' in tags.keys():

        dto = str(tags['EXIF DateTimeOriginal'])

        folder_name = datetime.strptime(dto,'%Y:%m:%d%H:%M:%S').strftime('%Y-%m-%d')

        des_path = flh / folder_name

        if not des_path.exists():

            des_path.mkdir(parents=True)

        i.replace(des_path / i.name)

注意此方法是根据拍摄日期来的,不是创建日期也不是修改日期,如果你执行完毕没有成功,应该是你的图片没有拍摄日期。

________________END______________

#!/usr/bin/env python3

import maya  # pipenv install maya

from pathlib import Path

fname = '/path/to/the/file'

dts = Path(fname).read_text().strip().split('\n')

target = '/path/to/another file'

valid_dts = [i for i in dts if 6 <= maya.parse(i).datetime().hour <= 7]

Path(target).write_text('\n'.join(valid_dts))

建立一个字典,键是文件名,键值是时间属性,

然后用内置的sorted()函数,根据字典的值进行排序,返回一个有序的列表

假设字典名字叫folder,有序列表叫order

order = sorted(folder.items(),key=lambda e:e[1],reverse=False)

key = lambda e:e[1]表示按值进行排序,也就是你需要的按时间属性排序,e[0]则是按键名进行排序

reverse=False可以省略不写,默认是升序排列,reverse=True就是降序排列了