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

如何自定义Path排序规则以实现指定的文件排序顺序?

实现自定义文件排序顺序

默认的sorted()函数是按字符串字典序排序,所以会先排列同版本号下的不同序号文件。要实现你想要的顺序,核心是自定义排序键,让排序先按文件名末尾的数字(_0、_1这类)分组,再按版本号的自然顺序排序。

直接上可用代码:

from pathlib import Path

def custom_sort_key(file_path):
    # 提取文件名(不含路径和后缀)
    filename = file_path.stem
    # 拆分出版本段和末尾数字段(格式为file_V{version}_{num})
    _, version_str, num_str = filename.split('_')
    # 将版本号转为整数元组,确保按数字逻辑比较(比如2023.2.3 > 2023.2.2)
    version_tuple = tuple(map(int, version_str.lstrip('V').split('.')))
    # 将末尾数字转为整数
    num = int(num_str)
    # 排序优先级:先按末尾数字,再按版本号
    return (num, version_tuple)

output_path = Path("./")
# 使用自定义键进行排序
for video_path in sorted(output_path.glob("*.txt"), key=custom_sort_key):
    print(video_path)

关键逻辑说明

  1. 拆分文件名:通过split('_')把文件名拆分成三部分,提取出版本字符串(比如V2023.2.2)和末尾数字字符串(比如0)。
  2. 版本号处理:把版本号去掉前缀V后拆分成数字元组,这样比较时会按数字大小排序,而不是字符串字典序(避免出现2023.10.0比2023.2.0靠后的错误)。
  3. 排序键设计:返回的元组(num, version_tuple)会让排序器先按num分组(0在前,1在后),每组内再按版本号升序排列,完全匹配你要的结果。

如果后续文件名格式有调整,只需要修改custom_sort_key里的拆分和提取逻辑即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:43:24