【发布时间】:2020-04-02 19:04:05
【问题描述】:
Path('.').glob('*.ext') 是否会产生一致的结果顺序(假设被通配的文件不会改变)?
It seems the glob ordering is based on the file system order(至少,对于旧的glob 包)。 pathlib's glob 的顺序是否会通过向目录中添加文件来更改(不会包含在 glob 中)?即使没有将任何内容添加到特定目录(例如,当系统上的其他地方进行其他大文件更改时),文件系统是否会更改此顺序?在几天的过程中?或者在所有这些情况下顺序会保持一致吗?
澄清一下,我不能简单地转换为列表并进行排序,因为有太多文件路径无法同时放入内存。我希望每次都能达到相同的顺序,因为我将进行一些 ML 训练,并希望将每个第 n 个文件留作验证数据。此培训需要几天时间,这就是为什么我很想知道文件系统上的订单是否长期保持稳定。
【问题讨论】:
-
它似乎不太可能是一致的,因为
pathlib的文档中的输出似乎是无序的(第三个示例docs.python.org/3/library/pathlib.html#basic-use) -
我不确定它是否可靠。请参阅这篇关于操作系统之间与
glob不一致的文章:arstechnica.com/information-technology/2019/10/… -
在运行过程中,您可以存储每个留出的第 n 个文件的文件名,然后在以后的运行中使用该信息。