按指定格式排序文件触发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
相关产品推荐
相关产品推荐

