在Python中查找最近编辑的文件

11 投票
8 回答
19531 浏览
提问于 2025-04-15 22:07

我有一组文件夹,我想运行一个功能,能够找到最近被编辑过的文件,并告诉我这个文件的名字和它所在的文件夹。

文件夹结构:

root
    Folder A
        File A
        File B
    Folder B
        File C
        File D
etc...

有没有什么建议可以帮助我入门,因为我遇到了一些困难。

8 个回答

8

如果有人想要一个一行代码就能解决的方法:

latest_edited_file = max([f for f in os.scandir("path\\to\\search")], key=lambda x: x.stat().st_mtime).name
11

把内置的目录遍历功能封装成一个函数,这个函数只返回文件的完整路径,这样会更方便。接着,你可以使用一个返回所有文件的函数,然后从中挑选出修改时间最新的那个文件。

import os

def all_files_under(path):
    """Iterates through all files that are under the given path."""
    for cur_path, dirnames, filenames in os.walk(path):
        for filename in filenames:
            yield os.path.join(cur_path, filename)

latest_file = max(all_files_under('root'), key=os.path.getmtime)
21

你可以看看 os.walk 这个函数,还有 os.stat,这两个可以帮助你做一些类似这样的事情:

import os

max_mtime = 0
for dirname,subdirs,files in os.walk("."):
    for fname in files:
        full_path = os.path.join(dirname, fname)
        mtime = os.stat(full_path).st_mtime
        if mtime > max_mtime:
            max_mtime = mtime
            max_dir = dirname
            max_file = fname

print max_dir, max_file

撰写回答