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

在两个目录中查找指定Excel文件生成路径,代码运行输出为空求助

问题修复方案

现有代码核心问题

  • 文件名匹配逻辑失效:os.walk返回的f是纯文件名(不含路径前缀),'/**/Score_Green_*' in f判断永远为假,且Python原生in操作不支持*通配符匹配,因此代码从未进入写入逻辑,无输出文件属于正常现象。
  • 遍历逻辑错误:你将单个文件的完整路径字符串赋值给ScoreGreen_Files后直接遍历,本质是在逐个遍历字符串的单个字符,即使进入匹配逻辑,pd.read_excel也无法读取有效路径。
  • 输出覆盖风险:如果匹配到多个文件,重复写入同一个OutputFilePath会不断覆盖之前的结果,仅保留最后一个文件的内容。
  • 多目录遍历未实现:现有代码仅遍历了第一个输入参数对应的目录,未满足你两个目录查找的需求。

修复后代码(兼容Python 2.7.18)

import os
import sys
import fnmatch
import pandas as pd

# 支持传入N个查找目录,最后一个参数为输出路径
input_dirs = sys.argv[1:-1]
output_path = sys.argv[-1]

# 存储所有匹配到的文件数据
all_dfs = []

for excel_dir in input_dirs:
    for root, subdirs, files in os.walk(excel_dir):
        for f in files:
            # 用fnmatch做通配符匹配,匹配Score_Green_开头的xlsx文件
            if fnmatch.fnmatch(f, 'Score_Green_*.xlsx'):
                full_file_path = os.path.join(root, f)
                df = pd.read_excel(full_file_path)
                # 可选:新增一列标记文件来源路径,方便后续区分
                df['source_file_path'] = full_file_path
                all_dfs.append(df)

# 合并所有数据后写入Excel,如果不需要合并可以调整为每个文件单独命名输出
if all_dfs:
    final_df = pd.concat(all_dfs, ignore_index=True)
    final_df.to_excel(output_path, index=False)

补充说明

  • 若运行时提示xlsx写入模块缺失,可安装适配Python2.7的依赖:pip install openpyxl==2.6.4
  • 如果你不需要合并多个匹配文件的内容,而是要每个文件单独输出到目标路径下,可以修改写入逻辑,用原文件名拼接输出路径即可,避免文件覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:00