使用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
相关产品推荐
相关产品推荐

