如何获取目录中最后修改的文件?

How to get last modified file in a directory?

我想用 python 获取最后 1 小时 modified/created 的文件。我试过这段代码,但它只获取了最后创建的文件。如果我创建了 10 个文件,它只显示最后一个。如何获取最近 1 小时创建的文件?

import glob
import os

list_of_files = glob.glob('c://*')
latest_file = max(list_of_files, key=os.path.getctime)
print(latest_file)

你基本上可以这样做:

  • 获取文件列表
  • 获取他们每个人的时间(也检查 os.path.getmtime() 更新)
  • 使用 datetime 模块获取要比较的值(即 1h)
  • 比较

为此,我使用字典以紧凑格式存储路径和时间戳。然后你可以按它的值(dict.values())(它是一个浮点数,时间戳)对字典进行排序,这样你将得到在 1 小时内创建的最新文件,这些文件是 排序的 . (例如通过 sorted(...) 函数):

import os
import glob
from datetime import datetime, timedelta

hour_files = {
    key: val for key, val in {
        path: os.path.getctime(path)
        for path in glob.glob("./*")
    }.items()
    if datetime.fromtimestamp(val) >= datetime.now() - timedelta(hours=1)
}

或者,没有理解:

files = glob.glob("./*")
times = {}
for path in files:
    times[path] = os.path.getctime(path)

hour_files = {}
for key, val in times.items():
    if datetime.fromtimestamp(val) < datetime.now() - timedelta(hours=1):
        continue
    hour_files[key] = val

或者,也许您的文件夹很乱,文件太多。在这种情况下,逐步处理它:

hour_files = {}
for file in glob.glob("./*"):
    timestamp = os.path.getctime(file)
    if datetime.fromtimestamp(timestamp) < datetime.now() - timedelta(hours=1):
        continue
    hour_files[file] = timestamp