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

使用Python配对仅part1/part2不同的相似文件名,输出对应元组列表

解决思路

核心逻辑是给每个文件生成统一的分组标识:因为配对的两个文件唯一差异只有part1/part2字段,所以只要把所有文件名里的part1和part2替换成同一个占位符,同组文件的标识就会完全一致,再按标识分组即可快速配对。
这个方法不需要拆分文件名的下划线,完全不受文件名中其他下划线的影响,比拆分字符串的方案更稳妥。

参考代码

import os
from collections import defaultdict

# 替换为你的目标文件夹路径
target_dir = "/path/to/your/folder"
# 存储分组,key是统一后的分组标识,value是同组的文件名列表
group_map = defaultdict(list)
# 最终配对结果
result = []

for filename in os.listdir(target_dir):
    # 可以根据需要修改后缀过滤规则,不需要的话可以去掉这行
    if not filename.endswith(".ext"):
        continue
    # 生成统一的分组标识:把part1/part2替换为相同的占位符
    group_key = filename.replace("part1", "__COMMON_PART__").replace("part2", "__COMMON_PART__")
    group_map[group_key].append(filename)

# 遍历分组生成配对元组
for file_list in group_map.values():
    # 仅保留正好有2个文件的有效配对,不需要过滤可以删掉这个判断
    if len(file_list) != 2:
        continue
    # 排序保证part1在前,part2在后
    file_list.sort()
    result.append(tuple(file_list))

print(result)

补充说明

  • 如果文件名中的part存在大小写差异(比如Part1/PART2),可以把替换逻辑改成正则大小写不敏感替换:
    import re
    group_key = re.sub(r'part([12])', r'__COMMON_PART_\1__', filename, flags=re.IGNORECASE)
    
  • 如果需要保留只有单个文件的分组,直接去掉len(file_list) != 2的判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:54:03