在python中查找最近编辑过的文件

zzt*_*521 8 python directory file path

我有一组文件夹,我希望能够运行一个功能,找到最近编辑过的文件,并告诉我文件的名称和文件夹.

文件夹布局:

root
    Folder A
        File A
        File B
    Folder B
        File C
        File D
etc...
Run Code Online (Sandbox Code Playgroud)

任何提示让我开始,因为我已经打了一个墙.

Eli*_*ght 18

您应该查看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
Run Code Online (Sandbox Code Playgroud)

  • `os.path.getmtime()`是`os.stat(full_path).st_mtime`的便捷简写. (3认同)

Alv*_*lve 8

如果有人正在寻找一种单行方法来做到这一点:

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

  • 欢迎来到堆栈溢出。虽然此代码可以回答问题,但提供有关此代码为何和/或如何回答问题的附加上下文可以提高其长期价值。[如何回答](https://stackoverflow.com/help/how-to-answer) (2认同)

Ant*_*sma 6

它有助于将内置目录walk to包装为仅生成文件的完整路径的函数.然后你可以只使用返回所有文件的函数并选择具有最高修改时间的函数:

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)
Run Code Online (Sandbox Code Playgroud)