gpt4 book ai didi

python - os.listdir() 是确定性的吗?

转载 作者:太空狗 更新时间:2023-10-29 18:34:06 26 4
gpt4 key购买 nike

从 Python 的文档中,os.listdir() 返回

a list containing the names of the entries in the directory given by path. The list is in arbitrary order.

我想知道的是,这个任意顺序是否总是相同/确定的? (从一台机器到另一台机器,或者通过时间,前提是文件夹的内容是相同的)

编辑:我不想让它具有确定性,我也不想使用它。我只是想知道(例如,顺序取决于什么?)

最佳答案

为了了解发生了什么,我们可以检查可以找到的 python 3.2 的底层实现 here .

我们将重点关注从 2574 行开始的 POSIX 部分.在代码中定义:

DIR *dirp;              // will store the pointer to the directory
struct dirent *ep; // will store the pointer to the entry

有两个重要的 POSIX 调用:opendir2596 行和 readdir2611 行.

正如您可以从 readdir 手册页中读到的那样:

The readdir() function returns a pointer to a dirent structure representing the next directory entry in the directory stream pointed to by dirp. It returns NULL on reaching the end of the directory stream or if an error occurred.

所以,readdir读取目录中的下一个条目,但由文件系统实现来定义下一个。您可以阅读有关此主题的更多信息 here :

[...] Because this is a per-filesystem thing, it follows that the traversal order can be different for different directories on the same system even if they have the same entries created in the same order, either because the directories are using different filesystem types or just because some parameters were set differently on the different filesystems.

关于python - os.listdir() 是确定性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31534583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com