python - 如何控制python中迭代器结果的顺序

标签 python iterator pathlib

我使用 pathlib.Path().iterdir() 获取路径的子字典。

/home/yuanyi/workspace/app下,有4个文件夹:01020304

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/

相关文章:

python - 如何使用 Python pathlib 更改目录

python - pyQT声子播放器全屏显示?

iterator - 有没有内置的方法来比较两个迭代器?

c++ - 二维 vector 上的迭代器

python - 如何使用 pathlib 从当前路径的一部分创建一个新的 Path 对象?

Python pathlib Path().mkdir() 将所需模式应用于最终目录,但将 mode-umask 模式应用于父目录 - 错误?

python - 追加到 Pandas 多重索引

在vim中编辑的python文件移动到intellij会遇到缩进不一致错误

python - YouCompleteMe/Python 可以完成内置库,但不能完成站点包

c++ - std::map::begin() 之前的 STL 迭代器