使用 Python 从目录中获取单个文件的最有效和最快的方法是什么?
关于我的具体问题的更多详细信息:
我有一个包含大量预生成文件的目录,我只想随机选择一个。因为我知道除了首先列出所有文件之外没有真正有效的从目录中选择随机文件的方法,所以我的文件是用一个已经随机的名称生成的,因此它们已经是随机排序的,我只需要选择第一个文件夹中的文件。
所以我的问题是:如何从我的文件夹中选择第一个文件,而不必从目录中加载整个文件列表(也没有操作系统这样做,我的最佳目标是强制操作系统返回我一个文件,然后停止!)。
注意:我的目录中有很多文件,因此我想避免列出所有文件而只选择一个。
注意2:每个文件只选择一次,然后删除以确保下次只选择新文件(从而确保某种随机性)。
解决方案
我最终选择使用一个索引文件来存储:
- 要选择的当前文件的索引(例如:file1.ext 为 1,file2.ext 为 2,等等)
- 最后生成的文件的索引(例如:file1999.ext 为 1999)
当然,这意味着我的文件不再使用随机名称生成,而是使用确定性可递增模式(例如:“file%s.ext”% ID)
因此,我的两个主要操作有一个几乎恒定的时间:
- 访问文件夹中的下一个文件
- 计算剩余文件的数量(以便我可以在需要时在后台线程中生成新文件)。
这是针对我的问题的特定解决方案,有关更通用的解决方案,请阅读已接受的答案。
此外,您可能对我发现的这两个其他解决方案感兴趣,这些解决方案可以使用 Python 优化文件和目录访问的访问: