【发布时间】:2020-01-30 13:34:00
【问题描述】:
我正在使用下面的代码来获取目录中的 json 文件名。
import glob
jsonFiles = glob.glob(folderPath+"*.json")
每秒会在目录中创建许多新的 json 文件(比如 100/s)。通常它工作正常,但没有时会卡住。文件很大 (~150000) 并且需要很长时间 (3 - 4 分钟) 才能检索文件名。这可能是因为传入速率较大(不确定)。
是否有任何替代方法可以使用 python 或 linux 命令获取文件名有效。 获取最旧的 1000 个文件名也可以。我不需要一次所有的文件名。
我遇到了以下 shell 命令:
ls -Art | head -n 1000
会有帮助吗?它是否首先列出所有文件名,然后检索 1000 条最旧的记录?提前致谢。
【问题讨论】:
-
如何在不查看所有文件的情况下获取最旧的 N 个文件名?
-
只是为了确定:仅此代码需要 3 - 4 分钟?只是 globbing,不获取文件年龄?
-
您是否看到其他问题/答案stackoverflow.com/questions/8931099/quicker-to-os-walk-or-glob?即使是最慢的文件也需要大约 3 秒,大约有一百万个文件,所以我认为还有其他事情发生
-
为了强化@RoadRunner 所说的内容,似乎您必须所有文件才能确定哪些是最旧的 - 所以这是最有可能导致的区域放缓。
-
@martineau 我在想也许linux默认以某种排序顺序存储文件(可能是名称/大小/创建时间戳/修改时间戳等),并且可能有一种方法可以检索前 N 个文件名不看所有。