要使用Python对图像按照日期(年月日)进行分类,你可以考虑以下几个步骤:
- 读取图像文件的元数据(EXIF),来获取拍摄日期
- 根据拍摄日期创建对应的文件夹结构(例如:年/月/日)
- 将图像移动到对应的文件夹中
你可以参考下面这段代码进行修改 DIY:
import os
import shutil
from PIL import Image
from datetime import datetime
# 图像所在目录
image_dir = '/path/to/your/images'
# 分类后图像存放的目录
sorted_dir = '/path/to/sorted/images'
# 确保分类后的目录存在
if not os.path.exists(sorted_dir):
os.makedirs(sorted_dir)
# 遍历图像目录中的所有文件
for filename in os.listdir(image_dir):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.tiff', '.bmp', '.gif')):
# 构建完整的文件路径
file_path = os.path.join(image_dir, filename)
try:
# 打开图像文件
with Image.open(file_path) as img:
# 从图像文件中获取EXIF信息
exif_data = img._getexif()
# 找到日期时间的EXIF标签
date_time_original = exif_data.get(36867)
if date_time_original:
# 解析日期时间字符串
date_taken = datetime.strptime(date_time_original, '%Y:%m:%d %H:%M:%S')
# 构建日期目录结构(年/月/日)
date_folder = os.path.join(sorted_dir, str(date_taken.year), str(date_taken.month).zfill(2), str(date_taken.day).zfill(2))
# 如果日期目录不存在,则创建
if not os.path.exists(date_folder):
os.makedirs(date_folder)
# 移动文件到相应的日期目录
shutil.move(file_path, os.path.join(date_folder, filename))
else:
print(f"No EXIF date information found for {filename}")
except (IOError, KeyError, IndexError):
print(f"处理 {filename} 时出错!")
print("搞定!")
|