在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)
- 将时间戳和文件名放在一个列表中,并按时间戳排序,最大的时间戳是最近编辑的文件
传递给
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)