我有一组文件夹,我希望能够运行一个函数来查找最近编辑过的文件,并告诉我文件的名称及其所在的文件夹。在python中查找最近编辑过的文件
文件夹布局:
root
Folder A
File A
File B
Folder B
File C
File D
etc...
任何提示,让我开始,我已经打了一下墙上的。
我有一组文件夹,我希望能够运行一个函数来查找最近编辑过的文件,并告诉我文件的名称及其所在的文件夹。在python中查找最近编辑过的文件
文件夹布局:
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
'os.path.getmtime()'是'os.stat(full_path).st_mtime'方便的简写形式 – 2010-04-28 16:45:04
我运行时遇到错误它从我的主目录: OSError:[Errno 2]没有这样的文件或目录:'./.config/chromium/SingletonLock' – armandino 2010-04-28 18:22:37
@armandino:我猜问题是,有一个锁文件是创建并非常迅速地删除。如果它在'os.walk'返回它的文件名后,但在调用'os.stat'之前被删除了,那么你会期望看到这样的错误。如果你真的需要在这样的文件被删除的目录上运行这样的脚本,我建议在try/except块中将调用包装到'os.stat'中。 – 2010-04-28 18:49:37
使用os.path.walk()
遍历目录树和os.stat().st_mtime
以获取文件的mtime。
您传递给os.path.walk()
(visit
参数)的函数只需要跟踪它看到的最大mtime以及它看到它的位置。
'os.path.walk'已被弃用 – SilentGhost 2010-04-28 15:55:43
它有助于将内置目录打包到只产生完整文件路径的函数中。然后,你可以采取返回文件的功能,并挑选出具有最高修改时间的一个:
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)
不错的提示 - 这帮了我一个小工程,我正在努力。 – 2013-05-20 12:14:22
虽然这种联系可以回答这个问题,最好是在这里有答案的关键部位和提供链接供参考。如果链接页面更改,则仅链接答案可能会失效。 - [发表评论](/ review/low-quality-posts/18075324) – Deep 2017-11-27 13:16:45