【问题标题】:Image sorter by created date in python按python中创建日期的图像分类器
【发布时间】:2014-11-10 15:01:42
【问题描述】:
我需要制作一个程序来对目录中的所有 .jpg 文件进行排序,或者只是对目录中的所有文件进行排序(因为它们都是 jpg,所以不必专门针对 jpg),这取决于制作日期,将它们放在两个单独的文件夹中:例如,2012 年之前在一个文件夹中,2012 年之后在另一个文件夹中……我不知道该怎么做的是如何让程序通读文件夹中所有文件/.jpgs 的属性,之后我想我知道该怎么做:将日期存储在一个变量中,创建两个文件夹,然后我在想一个 if 语句来传输文件比较他们的日期。但是我如何告诉程序为每个文件执行此操作,无论它们有多少?...因为我不知道文件夹中有多少文件。谢谢!!!
【问题讨论】:
标签:
python
image
sorting
properties
【解决方案1】:
这里有一些快速代码可以帮助您找到正确的方向。它遍历文件夹中的所有文件并将它们移动到两个单独的子文件夹中。您可以修改它以使用 modify-date 而不是 create-date,或者如果需要仅获取 .jpg 文件。
import os, datetime
folder_name = "MY_PATH"
for file_name in os.listdir(folder_name):
file_name_full = os.path.join(folder_name, file_name)
if not os.path.isfile(file_name_full):
continue
timestamp = os.path.getctime(file_name_full)
dt = datetime.datetime.fromtimestamp(timestamp)
# print out the datestamp
print dt
# if you now want to put them into subfolders based on the year 2012
# you can do something like the following
yr = dt.year
subfolder_name = ""
if yr < 2012:
subfolder_name = "before 2012"
else:
subfolder_name = "2012 and after"
subfolder_name_full = os.path.join(folder_name, subfolder_name)
new_file_name_full = os.path.join(subfolder_name_full, file_name)
# I assume your folders are premade. If not, you can do a quick-and-dirty mkdir here
print "Moving %s -> %s" % (file_name_full, new_file_name_full)
os.rename(file_name_full, new_file_name_full)