如何将mainPath目录下的文件名按前缀数字进行升序排列
实现方案
你可以直接调用Python内置的sorted()函数,通过指定排序key提取文件名开头的数字作为排序依据即可,具体实现如下:
适配你场景的最简代码(文件名统一为「数字. 文件名」格式)
import os # 先获取路径下的所有文件/文件夹名 file_list = os.listdir(mainPath) # 按开头数字升序排序 sorted_file_list = sorted(file_list, key=lambda x: int(x.split('.')[0]))
- 逻辑说明:
x.split('.')[0]会将每个文件名按.分割后取第一部分,也就是开头的数字字符串,转为int类型后作为排序权重,完全符合你需要的01、02...09的排序效果,也不会出现10排在2前面的字符串排序错误问题。
兼容异常场景的代码
如果存在部分文件名不符合「数字.」开头的格式,希望将这些文件排到列表末尾,可以用下面的容错版本:
import os def get_sort_key(filename): try: num_part = filename.split('.')[0] return int(num_part) except (ValueError, IndexError): # 格式不符合的文件统一返回无穷大,排到列表最后 return float('inf') file_list = os.listdir(mainPath) sorted_file_list = sorted(file_list, key=get_sort_key)
- 如果你只需要保留文件、过滤掉文件夹,可以在排序前加一步筛选:
file_list = [f for f in os.listdir(mainPath) if os.path.isfile(os.path.join(mainPath, f))]
内容的提问来源于stack exchange,提问作者Maria Fernanda
相关产品推荐
相关产品推荐

