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

按指定格式排序文件触发ValueError异常,寻求Python解决方案

解决文件名按数字自然排序的问题

错误原因

你的代码中f.split('_')[0]获取到的是带dia前缀的字符串(比如dia14),直接转换为整数时,因为包含非数字字符dia,所以抛出ValueError。

修复方案

需要先提取文件名中dia后面的纯数字部分,再转换为整数作为排序键。以下是修改后的代码:

import os
files = os.listdir("/content/drive/MyDrive/emotion/data/dev/dev_splits_complete/")
# 提取dia后的数字作为排序依据
sorted_files = sorted(files, key=lambda f: int(f.split('_')[0].replace('dia', '')))
print(sorted_files)

替代实现(更高效的切片方式)

如果文件名格式固定为diaX_uttY.mp4,可以直接用切片跳过前3个字符(dia的长度),避免字符串替换操作:

sorted_files = sorted(files, key=lambda f: int(f.split('_')[0][3:]))

效果说明

处理后,文件名会按照dia后的数字大小排序,最终得到你需要的顺序:[dia0_utt0.mp4, dia1_utt0.mp4, dia2_utt0.mp4, dia10_utt0.mp4],而非字典序的错误排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:02:22