列出创建日期范围内的文件路径



我试图返回在创建的日期范围内的文件路径列表。我对Python比较陌生,几乎只在ArcMap中使用它,所以我有点困惑。我也没有访问一些模块,看起来他们会帮助我的工作电脑。

在本页的帮助下,我已经列出了文件夹中的所有文件路径,并按创建日期对它们进行排序。


import os, stat, time
path = r"\myImageData"

filepaths = [os.path.join(path, file) for file in os.listdir(path)]
print(filepaths)

files_sorted_by_date = []
file_statuses = [(os.stat(filepath), filepath) for filepath in filepaths]
files = ((status[stat.ST_CTIME], filepath) for status, filepath in file_statuses if stat.S_ISREG(status[stat.ST_MODE]))

for creation_time, filepath in sorted(files):
creation_date = time.ctime(creation_time)
files_sorted_by_date.append(creation_date + " " + filepath)
print(files_sorted_by_date)

如果只列出带有"date created"的文件路径,该怎么做?在我提供的日期范围内?

另外,我的文件路径是用两个字符(4在开头,2在每个文件夹之间)列出的,所以它不能直接粘贴到windows资源管理器中找到我的文件。它们最终将充当超链接,因此它们需要正确。我可以做一个查找和替换将 更改为,但我想知道我是否从一开始就做错了什么导致这种情况发生。

编辑:

我正在尝试使用os.walk()在我的目录子文件夹中搜索所有文件。

import os, stat, time
from datetime import datetime
path = r"\myimagefolder"
filepaths = []
for subdir, dirs, files in os.walk(path):
for file in files:
filepath = os.path.join(subdir, file)
filepaths.append(filepath)

print(filepaths)
#above is my attempt to search within subfolders, below is code I used from @Deo's comment
#datetime(year, month, day, hour, minute, second, microsecond)
range_start = datetime.date(datetime(2020, 3, 19))   #19th March 2020 to..
range_end = datetime.date(datetime(2021, 4, 19))    #19th April 2021
#get path only if its a file
filepaths = [os.path.join(path, file) for file in os.listdir(path) if os.path.isfile(file)]
#filter again if creation time is between the above range
filepaths = [paths for paths in filepaths if os.path.getctime(paths) > range_start and os.path.getctime(paths) < range_end]
print("n".join(sorted(filepaths)))
print(filepaths)

在使用os.walk()的for循环之后,文件路径列表的第一个print语句返回path中每个子文件夹中的每个文件路径。代码末尾倒数第二个函数不返回任何值,最后一个返回空列表。我认为我处理文件路径列表的两种方式是不兼容的,在某些时候列表被清空。

如果我删除"获取路径只有当它是一个文件"行返回错误TypeError: can't compare datetime。日期浮动

我已经确认在这个日期范围内确实存在文件。

import os, stat, time
from datetime import datetime
path = "\my\ImageData"
#datetime(year, month, day, hour, minute, second, microsecond)
range_start = datetime.timestamp(datetime(2020, 7, 1, 23, 55, 59, 0))   #1st Jul 2020 11:55:59PM to..
range_end = datetime.timestamp(datetime(2021, 8, 10, 23, 55, 59, 0))    #10th Aug 2021 11:55:59PM
#get path only if its a file
filepaths = [os.path.join(path, file) for file in os.listdir(path) if os.path.isfile(file)]
#filter again if creation time is between the above range
filepaths = [paths for paths in filepaths if os.path.getctime(paths) > range_start and os.path.getctime(paths) < range_end]
print("n".join(sorted(filepaths)))

相关内容

  • 没有找到相关文章

最新更新