首页 > 解决方案 > Python 3.6 - 枚举文件

问题描述

我正在尝试在文件夹中循环一系列 jpg 文件。我找到了示例代码:

for n, image_file in enumerate(os.scandir(image_folder)):

这将遍历image_folder. 但是,它似乎没有遵循任何顺序。我有我的文件名,如000001.jpg, 000002.jpg, 000003.jpg,... 等等。但是当代码运行时,它并没有遵循顺序:

000213.jpg
000012.jpg
000672.jpg
....

这里似乎有什么问题?

标签: pythonpython-3.x

解决方案


这是os.scandir()的相关位:

操作系统。scandir ​<em>(路径='.')

返回与pathos.DirEntry给出的目录中的条目相对应的对象的迭代器。条目以任意顺序产生,特殊条目 和不包括在内。'.''..'

您不应期望它按任何特定顺序排列。listdir()如果您考虑将其作为替代方案,情况也是如此。

如果您严格要求它们按顺序排列,请考虑先对它们进行排序:

scanned = sorted([f for f in os.scandir(image_folder)], key=lambda f: f.name)
for n, image_file in enumerate(scanned):

# ... rest of your code

推荐阅读