获取比时间戳更新的快速更改文件的列表



我想获得一个比时间戳更新的快速更改文件列表。

我特别想关注的文件是临时文件,它们在完全下载后被重命名。

在我的第一次试验中,我将问题分离,即,首先(1(列出文件,然后(2( 试图查看他们的修改时间:

import os.path
import glob
import datetime
def get_newer_files(ref_time = '2020-05-02 16:27:00.000000'):
path = os.path.expanduser("~") + '\Downloads\'
files = [f for f in glob.glob(path + "*.*")]
selected_files = []
for f in files:
dt = os.path.getmtime(f)
dt_string = str(datetime.datetime.fromtimestamp(dt))
if (dt_string > ref_time):
selected_files += [f]
return selected_files

然而,可分离方法有时会产生FileNotFoundError,因为临时文件可能在首次列出后就消失了。

有没有一种巧妙的方法可以一致地列出比某个时间戳更新的文件,而不可能出现这样的错误?

尝试使用scandir(),它返回目录中所有对象的迭代器,包括文件属性信息:

from os import scandir
from datetime import datetime
dir_entries = scandir('.')
for entry in dir_entries:
if entry.is_file():
file_name = entry.name
last_modified = datetime.utcfromtimestamp(entry.stat().st_mtime)
print(file_name, last_modified)
# you can filter here unwanted files older than X

最新更新