我有一组文件夹,我希望能够运行一个能够找到最近编辑过的文件的函数,并告诉我文件的名称及其所在的文件夹。
文件夹布局:
root
Folder A
File A
File B
Folder B
File C
File D
etc...
任何提示让我开始,因为我已经打了一个墙。
答案 0 :(得分:16)
您应该查看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
答案 1 :(得分: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)
答案 2 :(得分:3)
答案 3 :(得分:1)
答案 4 :(得分:1)
使用os.path.walk()
遍历目录树和os.stat().st_mtime
以获取文件的mtime。
您传递给os.path.walk()
的函数(visit
参数)只需要跟踪它看到的最大mtime以及它看到的位置。
答案 5 :(得分:0)
我正在使用path = r"C:\Users\traveler\Desktop"
:
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)
我在这里想念什么?
答案 6 :(得分:0)
如果有人正在寻找一种单行方式:
latest_edited_file = max([f for f in os.scandir("path\\to\\search")], key=lambda x: x.stat().st_mtime).name
答案 7 :(得分:0)
对于多个文件,如果有人为此而来:
import glob, os
files = glob.glob("/target/directory/path/*/*.mp4")
files.sort(key=os.path.getmtime)
for file in files:
print(file)
这将打印 /path/
内任何文件夹中具有 .mp4
扩展名的所有文件,最近修改的文件路径在底部。