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

Get a list of fast changing files which are newer than a timestamp

我想获得比时间戳更新的快速变化文件的列表。

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

在我的第一次试验中,我将问题设为可分离的,即首先 (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() 其中 returns 目录中所有对象的迭代器,包括文件属性信息:

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