os.walk并排序以数字

时间:2018-02-15 07:40:31

标签: python for-loop operating-system

我试图遍历我拥有的文件,并希望将每两个文件放在一对中,尤其是每两个文件之后实际上是相关的。

我的文件在我的目录中排序,我使用以下内容遍历目录并读取文件对:

for root, dirs, files in os.walk(TRAIN_DIR):
        for file1, file2 in itertools.izip_longest(files[::2], files[1::2]):

但是,我以不同的顺序接收file1和file2,而不是像目录中那样紧接着的那两个文件。 os.walk然后返回未分类的文件吗?我应该怎么做才能按排序顺序浏览文件?

感谢。

编辑1

这就是我运行files.sort()

的方式
for root, dirs, files in os.walk(TRAIN_DIR):
            files.sort()
            for file1, file2 in itertools.izip_longest(files[::2], files[1::2]):

1 个答案:

答案 0 :(得分:5)

返回文件的顺序取决于基础文件系统。如果您需要按排序顺序迭代文件名,最好自己完成:首先排序files,然后然后迭代。

for root, dirs, files in os.walk(TRAIN_DIR):
    files.sort(key=...)   # your predicate
    ...