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