我有一组文件夹,我希望能够运行一个函数来查找最近编辑的文件并告诉我文件的名称及其所在的文件夹。
文件夹布局:
root
Folder A
File A
File B
Folder B
File C
File D
etc...
有什么建议可以让我开始,因为我遇到了一些困难。
您应该查看 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)
它有助于将内置目录遍历包装为仅生成文件的完整路径的函数。然后,您可以使用返回所有文件的函数并选出修改时间最长的文件:
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)
如果有人正在寻找一种单行方式来做到这一点:
latest_edited_file = max([f for f in os.scandir("path\\to\\search")], 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.walk()
遍历目录树,使用 os.stat().st_mtime
获取文件的 mtime。
您传递给
os.path.walk()
(visit
参数)的函数只需要跟踪它所看到的最大 mtime 以及它在哪里看到的。
我正在使用
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)
我在这里缺少什么?