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

合并多份实验参与者CSV文件:解决FileNotFoundError问题

解决CSV合并时的FileNotFoundError问题

问题根源

你用listdir("results")拿到的只是文件夹里的纯文件名,不是完整路径。当你直接open(file)的时候,Python会在当前运行脚本的目录里找这个文件,而不是去results文件夹里找,自然就找不到了。

修正后的代码

推荐用os.path.join()拼接路径,它能自动适配不同系统的路径分隔符,比手动拼字符串靠谱。另外处理CSV文件最好用标准库的csv模块,能避免手动读行带来的格式问题(比如单元格里有逗号或换行的情况),同时用with语句自动管理文件关闭,省得忘关泄漏资源:

import os
import csv

folder_path = "results"
output_file = "merged_results.csv"

# 只筛选出.csv结尾的文件,避免误处理其他类型文件
csv_files = [f for f in os.listdir(folder_path) if f.lower().endswith(".csv")]

with open(output_file, "w", newline="", encoding="utf-8") as out_f:
    writer = csv.writer(out_f)
    is_first_file = True

    for filename in csv_files:
        # 拼接完整路径,这是解决找不到文件的核心
        full_path = os.path.join(folder_path, filename)
        with open(full_path, "r", encoding="utf-8") as in_f:
            reader = csv.reader(in_f)
            if is_first_file:
                # 第一个文件保留表头
                writer.writerows(reader)
                is_first_file = False
            else:
                # 后续文件跳过表头,避免重复
                next(reader)
                writer.writerows(reader)

几个关键细节

  • 必须用os.path.join()生成完整路径,确保Python能定位到results文件夹里的目标文件。
  • 用csv模块读写比直接读行更安全,能处理CSV的特殊格式场景。
  • with语句会在代码块结束后自动关闭文件,不用手动调用close(),减少bug。
  • 加了表头判断,避免合并后的文件里重复出现表头。如果你的CSV没有表头,直接删掉is_first_file相关逻辑就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:05:31