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

使用Python按正确顺序列出字母数字格式文件名时出现问题

问题产生原因

Python的os.listdir()返回的文件列表默认按照字符串字典序排序,字符串对比时会逐字符比较ASCII编码值:
例如对比C37572_00010.segd和C37572_0002.segd时,前7个字符C37572_0完全一致,第8个字符1的ASCII值小于2,所以系统会判定00010对应的文件更小,排在0002对应的文件之前,就会出现你看到的序号异常问题。

正确排序的实现方法

你只需要在排序时提取文件名中的序号部分,转为整数作为排序的依据即可,示例代码如下:

import os

os.chdir(r'I:\SEGY\C37572')
# 提取文件名中的序号转整数作为排序key
sorted_files = sorted(os.listdir(), key=lambda file_name: int(file_name.split('_')[1].split('.')[0]))

for g in sorted_files:
    print(g)

如果文件名格式存在波动,也可以用正则表达式精准匹配序号部分,兼容性更强:

import os
import re

os.chdir(r'I:\SEGY\C37572')
sorted_files = sorted(os.listdir(), key=lambda file_name: int(re.search(r'_(\d+)\.segd$', file_name).group(1)))

for g in sorted_files:
    print(g)

运行以上代码后输出的文件列表就会按照1、2、3……9、10、100、101的数值顺序正常排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:06:04