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

如何使用Python 3.x整理文本文件中的图片文件名

解决文件名重新排序的Python实现方案

这需求其实很清晰:就是把原本按前缀分组的文件名,改成按末尾的数字序号分组排序,同时保持同序号下前缀的原有顺序(A0→A1→B0→B1)。下面给你两种实用的Python 3.x实现方法:

方法一:基于字符串拆分的简洁实现

这种方法适合文件名格式固定的场景,直接通过字符串拆分提取排序关键字:

# 原始输入字符串
input_str = "IMAGE_[A0]_00001.jpg IMAGE_[A0]_00002.jpg IMAGE_[A1]_00001.jpg IMAGE_[A1]_00002.jpg IMAGE_[B0]_00001.jpg IMAGE_[B0]_00002.jpg IMAGE_[B1]_00001.jpg IMAGE_[B1]_00002.jpg"

# 将字符串拆分为单个文件名的列表
file_list = input_str.split()

# 自定义排序规则:先按末尾数字排序,再按前缀标识排序
sorted_files = sorted(
    file_list,
    key=lambda fname: (
        fname.split('_')[2].split('.')[0],  # 提取数字部分(如00001)
        fname.split('_')[1]                # 提取前缀标识(如[A0])
    )
)

# 将排序后的列表重新拼接为字符串
result = ' '.join(sorted_files)

print(result)

代码说明:

  • split() 方法把输入字符串按空格拆分成独立的文件名;
  • 排序时,先以数字部分作为第一关键字(保证00001的文件都排在00002前面),再以前缀标识作为第二关键字(保证同数字下A0→A1→B0→B1的顺序);
  • 最后用join()把排序后的列表重新拼成空格分隔的字符串。

方法二:基于正则表达式的健壮实现

如果文件名格式可能有变化(比如数字长度不同、前缀格式微调),用正则表达式提取关键字会更可靠:

import re

# 原始输入字符串
input_str = "IMAGE_[A0]_00001.jpg IMAGE_[A0]_00002.jpg IMAGE_[A1]_00001.jpg IMAGE_[A1]_00002.jpg IMAGE_[B0]_00001.jpg IMAGE_[B0]_00002.jpg IMAGE_[B1]_00001.jpg IMAGE_[B1]_00002.jpg"

file_list = input_str.split()

# 定义提取排序关键字的函数
def get_sort_key(fname):
    # 匹配并提取.jpg前的数字部分
    num_match = re.search(r'_(\d+)\.jpg', fname)
    # 匹配并提取IMAGE_和_之间的前缀标识
    prefix_match = re.search(r'IMAGE_(\[.*?\])_', fname)
    return (num_match.group(1), prefix_match.group(1))

# 按自定义关键字排序
sorted_files = sorted(file_list, key=get_sort_key)
result = ' '.join(sorted_files)

print(result)

代码说明:

  • 用正则表达式精准匹配数字和前缀部分,避免了字符串拆分可能带来的格式兼容性问题;
  • 即使文件名的数字长度从5位变成6位,或者前缀格式有小调整,只要核心结构不变,代码依然能正常工作。

两种方法运行后,都会输出你需要的结果:

IMAGE_[A0]00001.jpg IMAGE[A1]00001.jpg IMAGE[B0]00001.jpg IMAGE[B1]00001.jpg IMAGE[A0]00002.jpg IMAGE[A1]00002.jpg IMAGE[B0]00002.jpg IMAGE[B1]_00002.jpg

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:29:50