Skip to main content
 首页 » 编程设计

python之os.walk 和排序以数字开头的文件名

2025年05月04日23txw1958

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

我在我的目录中对文件进行了排序,我使用以下循环遍历目录并读取成对的文件:

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

但是,我收到的文件 1 和文件 2 的顺序不同,而不是像在目录中那样应该紧接在彼此之后的那两个文件。 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]): 

请您参考如下方法:

返回文件的顺序取决于底层文件系统。如果您需要按排序顺序遍历文件名,最好自己做:先对 files 排序,然后然后迭代。

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