下面是详细的脚本:
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 python3import 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就是降序排列了