You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用os.walk读取文件顺序随机,如何对输出的文件名进行排序?

解决方案

os.walk返回的文件名列表顺序由底层文件系统的存储逻辑决定,默认不会按照文件名的字面或数字顺序返回,你可以通过以下两种方式实现排序:

  • 基础字典序排序(适配你当前个位数命名的文件场景)
    直接调用内置sorted()函数对os.walk返回的文件列表做升序处理即可,修改后的代码如下:
from os import walk
def import_folder(path):
    for root, dirs, files in walk(path):
        # 对文件列表做升序排序
        sorted_files = sorted(files)
        print(sorted_files)

import_folder('/Users/leolepage/Documents/Python/Tutoriels/Video games/Pygame/Platformer/graphics/character/run')

运行后会输出['1.png', '2.png', '3.png', '4.png', '5.png', '6.png']的有序结果。

  • 自然数字排序(适配多位数文件名的通用场景)
    如果后续文件名包含两位及以上数字(比如10.png、11.png),基础字典序排序会出现10.png排在2.png之前的问题,此时可以提取文件名中的数字作为排序键实现自然排序,代码如下:
from os import walk
import re

# 提取文件名中的数字作为排序依据
def get_file_sort_key(filename):
    num_match = re.search(r'(\d+)\.png', filename)
    return int(num_match.group(1)) if num_match else float('inf')

def import_folder(path):
    for root, dirs, files in walk(path):
        sorted_files = sorted(files, key=get_file_sort_key)
        print(sorted_files)

import_folder('/Users/leolepage/Documents/Python/Tutoriels/Video games/Pygame/Platformer/graphics/character/run')

内容的提问来源于stack exchange,提问作者Léo Lepage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:24:04