os.listdir的文件名顺序

时间:2016-06-29 15:40:05

标签: python

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

0.jpg
1.jpg
2.jpg
.
.
.
n.jpg
.
.
.

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

for path, dirs, files in os.walk(path_to_A):
    for filename in files:
        fullpath = os.path.join(path, filename)

读取filename(读取每个图像)并更新数组B. 数组B的大小正好是A中的图像数量。

我的问题是,总是会出现数组第j个位置对应j.jpg图像文件的情况吗?

例如,如果文件夹A中的名称不同(但是按照字典顺序排序 - 顺便说一句,它是否真的是我们在win或linux OS中列出目录时保留的字典顺序?)这将在数组中描述乙

谢谢!

2 个答案:

答案 0 :(得分:4)

不,第j个位置将(或至少CAN)变化。来自the docs(强调我的)

  

os.listdir(path='.')
  返回一个列表,其中包含path给出的目录中的条目名称。 列表按任意顺序,不包含特殊条目'。'和'..'即使它们出现在目录中。

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

答案 1 :(得分:0)

Original Author: Elliot's on this thread

Use natsort library:

Install the library with the following command for Ubuntu and other Debian versions

Python 2

sudo pip install natsort

Python 3

sudo pip3 install natsort

Details of how to use this library is found here