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

如何按文件夹原始顺序打印其中的文件?

解决os.listdir输出文件名非自然排序的问题

os.listdir()默认按字符串字典序返回文件列表,这就是为什么"10.mp4"会排在"2.mp4"前面——字符串比较时,"1"的ASCII码小于"2",和数字大小逻辑无关。要实现自然数字排序,有两种常用方案:

方案1:自定义排序规则(无需额外依赖)

提取文件名中的数字部分转为整数,以此作为排序依据:

import os

path = "你的目标文件夹路径"
targetFile = os.listdir(path)
# 拆分文件名与后缀,提取数字部分转为整数排序
sorted_files = sorted(targetFile, key=lambda filename: int(os.path.splitext(filename)[0]))
for file in sorted_files:
    print(file)

逻辑说明:os.path.splitext(filename)[0]会去掉文件名的后缀(比如把"1.mp4"变成"1"),转成整数后就能按数字大小排序。

方案2:使用natsort库(适合复杂文件名场景)

如果文件名包含前缀、多段数字等复杂格式,推荐用专门处理自然排序的natsort库:

  1. 先安装库:
pip install natsort
  1. 代码实现:
from natsort import natsorted
import os

path = "你的目标文件夹路径"
targetFile = os.listdir(path)
sorted_files = natsorted(targetFile)
for file in sorted_files:
    print(file)

natsorted()会自动识别字符串中的数字,按照自然逻辑排序,无需手动提取数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:20:32