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

Python:查找创建日期介于两个设置日期之间的文件(png),python,windows,date,Python,Windows,Date,我对Python比较陌生,我正在尝试制作一个脚本,用于查找在两个日期之间创建的文件(照片),并将其放入文件夹中。 为此,我需要以某种方式获得文件的创建日期(Windows上的Im)。 我已经把所有的东西都编码好了,但我只需要知道每张照片的日期。如果您想知道日期是以何种形式返回的,您也会很感兴趣。最好的是m/d/y或d/m/y(d=天;m=月,y=年)。 提前谢谢大家!我是这个论坛的新手请参阅Pythonos软件包,了解基本系统命令,包括带有选项的目录列表。您将能够提取文件日期。有关日期操作,请参

我对Python比较陌生,我正在尝试制作一个脚本,用于查找在两个日期之间创建的文件(照片),并将其放入文件夹中。 为此,我需要以某种方式获得文件的创建日期(Windows上的Im)。 我已经把所有的东西都编码好了,但我只需要知道每张照片的日期。如果您想知道日期是以何种形式返回的,您也会很感兴趣。最好的是m/d/y或d/m/y(d=天;m=月,y=年)。
提前谢谢大家!我是这个论坛的新手

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


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

我想您是在某种程度上列出了文件,如果是这样的话,那么请使用
os.stat(path).st_ctime
获取Windows中的创建时间,然后使用datetime模块字符串格式化它

此示例显示如何转换mtime(修改)时间,但同样适用于ctime(创建时间)

一旦你有了ctime,检查它是否在一个范围内就相对简单了

在转换之前,您需要执行日期逻辑​ 一串

解决方案之一,不是很有效。。只是为了展示一种可以做到这一点的方法

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"))
导入操作系统
从日期时间导入日期时间
def过滤器文件(路径、开始日期、结束日期、日期格式=“%Y”):
结果=[]
start_time_obj=datetime.strtime(start_date,date_格式)
end_time_obj=datetime.strtime(end_date,date_格式)
对于os.listdir(路径)中的文件:
c_time=datetime.fromtimestamp(os.stat(file.st_ctime)

如果start_time_obj您可以使用
subprocess
在文件上运行shell命令以获取该文件的元数据

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

这是我的解决办法。枕头/图像模块可以访问.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')

非常感谢你!我稍后会测试这个。另外:是否有一种“简单”的方法可以获取文件夹中的所有文件,然后搜索在指定时间跨度内创建的文件?:)我在答案中添加了一个示例,它可以过滤两个日期之间的文件。您是在特定文件夹中搜索文件还是在整个系统中搜索文件?