Python:使用两个设置日期之间的创建日期查找文件(png)

时间:2017-06-01 17:26:28

标签: python windows date

我对Python比较陌生,我试图创建一个脚本来查找在两个日期之间创建的文件(照片)并将它们放入一个文件夹中。 为此,我需要以某种方式获取文件的创建日期(我在Windows上)。 我已经编码了所有内容,但我只需要获取每张图片的日期。看看返回日期的形式也很有趣。最好的是m / d / y或d / m / y(d =天; m =月,y =年)。 谢谢大家!我是这个论坛的新手

4 个答案:

答案 0 :(得分:1)

我想你是以某种方式列出文件,如果是这样然后使用 os.stat(path).st_ctime在Windows中获取创建时间,然后使用datetime模块字符串格式。

https://docs.python.org/2/library/stat.html#stat.ST_CTIME

https://stackoverflow.com/a/39359270/928680 此示例显示如何转换mtime(修改)时间,但同样适用于ctime(创建时间)

一旦你有了ctime,检查它是否属于范围

是相对简单的

https://stackoverflow.com/a/5464465/928680

在转换为字符串之前,您需要执行日期逻辑。

其中一个解决方案,效率不高......只是为了说明这样做的一种方法。

import os
from datetime import datetime

def filter_files(path, start_date, end_date, date_format="%Y"):
    result = []
    start_time_obj = datetime.strptime(start_date, date_format)
    end_time_obj = datetime.strptime(end_date, date_format)
    for file in os.listdir(path):
        c_time = datetime.fromtimestamp(os.stat(file).st_ctime)
        if start_time_obj <= c_time <= end_time_obj:
            result.append("{}, {}".format(os.path.join(path, file), c_time))
    return result


if __name__ == "__main__":
    print "\n".join(filter_files("/Users/Jagadish/Desktop", "2017-05-31", "2017-06-02", "%Y-%m-%d"))

喝彩!

答案 1 :(得分:0)

请参阅Python os包以获取基本系统命令,包括带有选项的目录列表。您将能够提取文件日期。请参阅Python datetime包以进行日期操作。

另外,检查您的版本上可用的Windows命令:大多数命令都带有日期参数的搜索功能;你可以简单地让OS系统命令返回所需的文件名。

答案 2 :(得分:0)

您可以使用subprocess对文件运行shell命令以获取该文件的meta_data。

import re
from subprocess import check_output

meta_data = check_output('wmic datafile where Name="C:\\\\Users\\\\username\\\\Pictures\\\\xyz.jpg"', shell=True)

# Note that you have to use '\\\\' instead of '\\' for specifying path of the file

pattern = re.compile(r'\b(\d{14})\b.*')

re.findall(pattern,meta_data.decode())

=> ['20161007174858'] # This is the created date of your file in format - YYYYMMDDHHMMSS

答案 3 :(得分:0)

这是我的解决方案。枕头/图像模块可以访问.png文件的元数据。然后,我们访问该元数据的36867位置,即DateTimeOriginal。最后,我将返回的字符串转换为datetime对象,该对象可以灵活地执行任何您需要使用的操作。这是代码。

from PIL import Image
from datetime import datetime

# Get the creationTime
creationTime = Image.open('myImage.PNG')._getexif()[36867]

# Convert creationTime to datetime object
creationTime = datetime.strptime(creationTime, '%Y:%m:%d %H:%M:%S')
相关问题