在不读取所有内容的情况下找到目录中最新的文件
我正在尝试在一个巨大的文件系统中找到最新的文件。一个方法是逐个目录地查看,读取里面的内容,选出最新的文件等等。
显而易见的问题是,我必须获取特定目录中的所有文件。我在想,Python中是否有一个“魔法”调用,像Unix那样,可以直接获取目录中最新的文件。
[1]. 我的应用程序是用Python写的,但如果标准库中没有现成的解决方案,请提供使用系统调用的C语言替代方案。我愿意写一个C扩展来实现这个功能。
谢谢
更新: 我想我应该解释一下为什么inotify类型的解决方案对我不适用。我只是想找一个使用Python/C的系统调用,能够给我最新的文件。是的,可以使用inotify(或类似的监控系统)来监控文件系统的变化,但在一个随机目录中,我该如何找到最新的文件,这才是问题的核心。
4 个回答
3
在Unix系统中,没有通用的接口可以做到这一点。大多数文件系统并不会根据文件的修改时间(mtime)或创建时间(ctime)来索引目录里的文件。所以即使有这样的接口,它的速度也可能不会比你自己去做更快。
7
你有没有考虑过使用 pyinotify 呢?这个工具可以监视一个文件夹及其子文件夹的变化。
这可能需要你把代码做成多线程的,也就是说,可以创建一个专门的监视线程,记录最新的变化,然后让主线程去查看这些变化。
另外,你也可以使用 popen 命令,获取 'ls -t | head -1' 的结果。