os.listdir 中的文件名顺序

peb*_*x11 2 python

假设文件夹 A 包含以下文件:

0.jpg
1.jpg
2.jpg
.
.
.
n.jpg
.
.
.
Run Code Online (Sandbox Code Playgroud)

现在,python 脚本查看文件夹 A 并使用

for path, dirs, files in os.walk(path_to_A):
    for filename in files:
        fullpath = os.path.join(path, filename)
Run Code Online (Sandbox Code Playgroud)

读取filename(读取每个图像)并更新数组 B。数组 B 的大小与 A 中的图像数量完全相同。

我的问题是,数组的第 j 个位置是否总是对应​​于 j.jpg 图像文件?

例如,如果文件夹 A 中的名称不同(但按字典顺序排序 - 顺便说一句,当我们在 win 或 linux 操作系统中列出目录时,这真的是保留的字典顺序吗?)这会在数组 B 中描述吗?

谢谢!

Ada*_*ith 5

不,第 j 个位置会(或至少 CAN)发生变化。来自文档(强调我的)

os.listdir(path='.')
返回一个包含路径给定目录中条目名称的列表。该列表按任意顺序排列,不包括特殊条目“.”。和 '..' 即使它们存在于目录中。

也就是说,如果您希望对它进行排序,则会sorted生成一个稳定的按字典顺序排序的列表。sorted(os.listdir("your/path/here"))[n]应始终指向第 n 个文件(除非您的目录更改内容!)

  • `sorted` 在词法上是稳定的,但请记住它区分大小写。所以`A.jpg` 和`a.jpg` 将不会彼此靠近,而`C.jpg` 将出现在`b.jpg` 之前。还有一些问题,比如 `1.jpg` 和 `02.jpg`。 (2认同)