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

Python实现TXT行与Excel文件名匹配获取绝对路径

原代码问题排查

原代码无法正常匹配目标文件,由以下几个明确问题导致:

  • 缩进语法错误:for group in groups: 循环下属的执行代码没有按Python要求缩进,读取TXT的代码块缩进也不规范,会直接触发语法报错
  • 未定义变量:代码中使用了从未声明赋值的groups1变量,运行时会直接抛出NameError
  • 匹配逻辑错误:csv_files列表存储的是带完整目录路径、带.xlsx后缀的文件绝对路径,直接拿TXT中读取的纯名称(比如Johny)判断是否在全路径列表中,既无法精准匹配同名不同后缀的文件,也会因为路径前缀的存在匹配失败;同时列表推导的判断方向写反,无法得到预期结果
  • 命名混淆:将读取到的xlsx文件列表命名为csv_files,后续维护时容易出现逻辑错误
正确实现方案

以下代码可直接运行,会自动读取TXT名称、扫描目标目录下的xlsx文件、完成精准匹配,最终返回匹配到的文件绝对路径,同时提示未找到对应文件的名称:

import os
import glob

# 读取TXT中的名称列表,自动过滤空行、首尾空白字符
with open('groups.txt', 'r', encoding='utf8') as f:
    groups = [line.strip() for line in f.readlines() if line.strip()]

# 配置要扫描的目标目录,默认取当前脚本运行目录,可自行替换为其他目录路径
target_dir = os.getcwd()
# 获取目标目录下所有.xlsx后缀文件的绝对路径
xlsx_file_list = glob.glob(os.path.join(target_dir, "*.xlsx"))

# 构建「无后缀文件名 -> 文件绝对路径」的映射字典,避免重复遍历
file_map = {}
for file_abs_path in xlsx_file_list:
    # 从全路径中提取带后缀的文件名
    filename_with_ext = os.path.basename(file_abs_path)
    # 去掉.xlsx后缀,得到纯文件名
    pure_filename = os.path.splitext(filename_with_ext)[0]
    file_map[pure_filename] = file_abs_path

# 逐个匹配TXT中的名称,分类存储匹配结果
matched = {}
not_matched = []
for name in groups:
    if name in file_map:
        matched[name] = file_map[name]
    else:
        not_matched.append(name)

# 打印结果
print("=== 匹配成功的文件绝对路径 ===")
for name, abs_path in matched.items():
    print(f"{name}: {abs_path}")

if not_matched:
    print("\n=== 未找到对应Excel文件的名称 ===")
    for name in not_matched:
        print(name)

使用提示:如果需要扫描其他目录,只需要修改target_dir变量的值为目标目录的绝对路径即可;如果需要忽略大小写匹配,可以在构建file_map和匹配名称时,统一将纯文件名、TXT读取的名称转换为全小写/全大写后再做比对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:33:16