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

使用rglob递归搜索.asc文件合并存Excel时报FileNotFoundError如何解决

错误原因及修正方案

核心错误点

  • 未定义变量引用:with open(name)中的name变量不存在,应该使用遍历生成的path对象
  • 路径参数错误:path.name仅返回不带路径的纯文件名,程序默认在当前工作目录查找文件,找不到嵌套在DATA目录下的目标文件
  • 变量类型冲突:初始content被定义为列表,循环内被fn.readlines()的返回结果覆盖为字符串列表,后续append操作逻辑完全错误
  • 冗余低效操作:同时使用原生open和pandas.read_csv重复读取文件,且pd.concat放在循环内每次拼接,性能极低

修正后代码

import pandas as pd
from pathlib import Path

df_list = []
# 遍历所有asc文件
for path in Path('DATA').rglob('*.asc'):
    # 直接将Path对象传给read_csv,自动识别完整路径
    df = pd.read_csv(
        path, 
        skiprows=0, 
        encoding="ascii", 
        engine='python', 
        sep='|', 
        delimiter=None, 
        index_col=False, 
        header=0, 
        skipinitialspace=True
    )
    df_list.append(df)

# 所有文件读取完成后一次性拼接
final_df = pd.concat(df_list, ignore_index=True)
# 打印前10行验证
print(final_df.head(10))
# 保存为Excel
final_df.to_excel("asc_result.xlsx", index=False)

改动说明

  • 直接使用path对象作为pd.read_csv的入参,自动携带完整相对路径,解决文件找不到的问题
  • 移除冗余的open读文件逻辑,避免变量冲突
  • 先收集所有DataFrame到列表,最后一次性拼接,大幅提升运行效率
  • 拼接时添加ignore_index=True避免不同文件的索引重复冲突
  • 新增to_excel逻辑直接导出最终Excel文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 03:39:02