Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中查找最近编辑的文件_Python_File_Path_Directory - Fatal编程技术网

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

在python中查找最近编辑的文件,python,file,path,directory,Python,File,Path,Directory,我有一组文件夹,我希望能够运行一个功能,找到最近编辑的文件,并告诉我文件名及其所在的文件夹 文件夹布局: root Folder A File A File B Folder B File C File D etc... 有什么建议可以让我开始,因为我碰到了一堵墙。你可以使用 os.walk 请参阅:您应该查看函数以及,它可以让您执行以下操作: import os max_mtime = 0 for dirna

我有一组文件夹,我希望能够运行一个功能,找到最近编辑的文件,并告诉我文件名及其所在的文件夹

文件夹布局:

root
    Folder A
        File A
        File B
    Folder B
        File C
        File D
etc...
有什么建议可以让我开始,因为我碰到了一堵墙。

你可以使用

os.walk
请参阅:

您应该查看函数以及,它可以让您执行以下操作:

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
  • 用于列出文件
  • 用于获取文件修改的时间戳(st_mtime)
  • 将时间戳和文件名放在一个列表中,并按时间戳排序,最大的时间戳是最近编辑的文件
用于遍历目录树并获取文件的mtime


传递给
os.path.walk()
visit
参数)的函数只需要跟踪它所看到的最大时间和它所看到的位置。

它有助于包装内置的目录遍历到函数,该函数只生成文件的完整路径。然后,您可以使用返回所有文件的函数,选择修改时间最长的文件:

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)
我使用的是
path=r“C:\Users\traveler\Desktop”


我在这里遗漏了什么?

如果有人正在寻找一种单行方法:

latest_edited_file=max([f代表os.scandir(“path\\to\\search”)中的f),key=lambda x:x.stat().st_mtime).name

对于多个文件,如果有人为此而来:

import glob, os

files = glob.glob("/target/directory/path/*/*.mp4")
files.sort(key=os.path.getmtime)

for file in files:
   print(file)

这将打印
/path/
中扩展名为
.mp4
的任何文件夹中的所有文件,最新修改的文件路径位于底部。

os.path.getmtime()
os.stat(完整路径)的简写。st\u mtime
我从主目录运行它时出错:OSError:[Errno 2]没有这样的文件或目录:'./.config/chromium/SingletonLock'@armandino:我猜问题是有一个锁文件正在创建,然后很快被删除。如果在
os.walk
返回其文件名之后,但在调用
os.stat
之前删除了它,那么您可能会看到这样的错误。如果您确实需要在以这种方式删除文件的目录上运行这样的脚本,我建议将对
os.stat
的调用包装在try/except block.Eli中,如何在每个子文件夹中找到最后修改的文件并将其打印出来?很好的提示-这帮助我完成了一个小项目。欢迎使用Stack Overflow。虽然此代码可能会回答该问题,但提供有关此代码为什么和/或如何回答该问题的附加上下文可提高其长期价值。
import glob, os

files = glob.glob("/target/directory/path/*/*.mp4")
files.sort(key=os.path.getmtime)

for file in files:
   print(file)