如何用Python编写一个脚本来根据照片文件名'标识码_日期-time.jpg'的结构,自动将其按拍摄日期分门别类存入以年月日命名的子文件夹,以便优化档案管理系统的组织结构?
时间: 2024-10-25 17:10:26 浏览: 12
你可以使用Python的os、datetime以及shutil模块来实现这个功能。下面是一个简单的脚本示例:
```python
import os
import datetime
def sort_photos(input_dir, output_dir):
# 首先,检查output_dir是否存在,如果不存在则创建它
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 指定源目录和目标文件夹的路径
source_path = input_dir
for filename in os.listdir(source_path):
# 解析文件名
parts = filename.split('_')
identifier = parts[0]
date_str = parts[1].split('-') # 假设日期格式是"YYYY-MM-DD-HH-MM"
try:
# 将字符串转换成日期对象
date = datetime.datetime.strptime(date_str[0], '%Y-%m-%d')
# 创建目标子文件夹,如不存在
subfolder_path = os.path.join(output_dir, date.strftime('%Y/%m/%d'))
if not os.path.exists(subfolder_path):
os.makedirs(subfolder_path)
# 移动文件到对应的子文件夹
new_file_path = os.path.join(subfolder_path, f'{identifier}_{filename[parts.index("_")+1:]}')
shutil.move(os.path.join(source_path, filename), new_file_path)
except ValueError:
print(f"无法解析文件 {filename} 的日期部分,请检查其格式是否正确")
# 使用方法
sort_photos('/path/to/source/images', '/path/to/output/folders')
```
在这个脚本中,我们首先列出输入目录下的所有文件,然后尝试从每个文件名中提取日期。接着,我们创建对应年月日的子文件夹,如果不存在就新建。最后,我们将照片移动到相应的子文件夹内。
阅读全文