我使用 pathlib.Path().iterdir()
获取路径的子字典。
在/home/yuanyi/workspace/app
下,有4个文件夹:01
、02
、03
,04
。
from pathlib import Path
for subdir in Path('/home/yuanyi/workspace/app').iterdir():
print(subdir)
但结果没有排序。
/home/yuanyi/workspace/app/02
/home/yuanyi/workspace/app/03
/home/yuanyi/workspace/app/01
/home/yuanyi/workspace/app/00
结果不是以下内容:
/home/yuanyi/workspace/app/01
/home/yuanyi/workspace/app/02
/home/yuanyi/workspace/app/03
/home/yuanyi/workspace/app/04
我想知道迭代器是如何工作的,以及获得有序结果的最佳方法是什么。
最佳答案
你可以使用“sorted()”
Built-in Functions Python - sorted()
from pathlib import Path
for subdir in sorted(Path('/some/path').iterdir()):
print(subdir)
注意: @NamitJuneja 指出,这将遍历生成器更改为遍历列表。因此,如果内存中有大量文件,将它们全部加载到内存中(通过将它们加载到列表中)可能会导致问题。
在我的 Mac 上,iterdir() 方法返回已排序的列表。所以这看起来取决于系统。您使用的是什么操作系统?
关于python - 如何控制python中迭代器结果的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36033849/