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

Python中os.walk获取文件无序致Pygame动画异常,如何用sorted处理?

解决Pygame动画文件顺序混乱问题

os.walk返回的文件列表是文件系统存储的原始顺序,并非按文件名排序,直接使用会导致动画帧顺序错乱,用sorted()就能解决这个问题。

基础版修改(适配常规命名)

如果你的动画帧文件名是run_0.png、run_1.png这类按数字编号的,直接对文件列表排序即可:

from os import walk

def import_folder(path):
    for _, __, img_files in walk(path):
        sorted_files = sorted(img_files)
        print(sorted_files)

import_folder('../Graphics/character/run')

进阶版修改(精准按数字排序)

如果文件名里的数字是多位数(比如run_frame_01.png),直接字符串排序会出现10排在2前面的问题,这时候可以提取文件名中的数字作为排序依据:

from os import walk

def import_folder(path):
    for _, __, img_files in walk(path):
        # 提取文件名中的数字部分,转成整数后排序
        sorted_files = sorted(img_files, key=lambda x: int(x.split('_')[-1].split('.')[0]))
        print(sorted_files)

import_folder('../Graphics/character/run')

更简洁的替代方案(无嵌套文件夹时)

如果你的动画帧都在目标文件夹里,没有子目录,用os.listdir()替代walk更高效:

import os

def import_folder(path):
    # 只筛选图片文件
    img_files = [f for f in os.listdir(path) if f.lower().endswith(('.png', '.jpg', '.jpeg'))]
    sorted_files = sorted(img_files)
    print(sorted_files)

import_folder('../Graphics/character/run')

内容的提问来源于stack exchange,提问作者Quantum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:45:47