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

如何找出两个文件夹中名称前缀相同的对应文件子列表

匹配两个文件列表中前缀相同的文件

嘿,这事儿不难!咱们先理清楚:你需要从list_1(CSV文件)和list_2(JSON文件)里找出那些核心名称部分一致的文件对——比如12_a1_pp.csv对应12_a1.json,核心就是12_a1对吧?

步骤拆解

  1. 提取每个文件的匹配键:
    • 对于CSV文件(list_1里的),文件名格式是[核心名]_pp.csv,去掉末尾的_pp.csv就能得到核心键。
    • 对于JSON文件(list_2里的),文件名格式是[核心名].json,直接去掉.json就能得到核心键。
  2. 找出共同的键:把两个列表的核心键取交集,这些就是存在对应文件的标识。
  3. 筛选对应文件:根据共同的键,分别从两个列表里挑出匹配的文件。

代码实现

from os import listdir

# 读取文件列表(你原来的代码)
list_1 = [file for file in listdir("./folder1/") if file.endswith(".csv")]
list_2 = [file for file in listdir("./folder2/") if file.endswith(".json")]

# 定义函数提取匹配键
def get_csv_key(filename):
    # 去掉末尾的"_pp.csv",长度为7个字符
    return filename[:-7]

def get_json_key(filename):
    # 去掉末尾的".json",长度为5个字符
    return filename[:-5]

# 生成键到文件名的映射(兼容可能的重名情况)
csv_key_map = {get_csv_key(f): f for f in list_1}
json_key_map = {get_json_key(f): f for f in list_2}

# 找出共同的键
common_keys = set(csv_key_map.keys()) & set(json_key_map.keys())

# 生成对应的匹配子列表
matched_csv = [csv_key_map[key] for key in common_keys]
matched_json = [json_key_map[key] for key in common_keys]

# 输出结果
print("匹配的CSV文件:", matched_csv)
print("匹配的JSON文件:", matched_json)

运行结果(对应你的示例数据)

匹配的CSV文件: ['12_a1_pp.csv', '32_a3_pp.csv']
匹配的JSON文件: ['12_a1.json', '32_a3.json']

灵活适配小技巧

如果你的文件名格式有变动(比如_pp不是固定后缀),可以换一种方式提取核心键——比如按下划线分割取前两部分:

def get_csv_key(filename):
    parts = filename.split("_")
    return "_".join(parts[:2])

def get_json_key(filename):
    # 先去掉.json后缀,再分割下划线
    name_part = filename.split(".")[0]
    parts = name_part.split("_")
    return "_".join(parts[:2])

这样就算后缀有变化,只要核心的xx_xx部分一致,也能精准匹配~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:15:53