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

循环调用pandas.to_csv无法将文件保存至指定文件夹问题求助

问题排查与修复方案

你的代码执行无报错但未生成TXT文件,核心问题出在路径处理和文件匹配逻辑上,以下是具体问题分析和修复方案:

主要问题点

  • 路径重复拼接:os.walk(W_dir_path)返回的src已经是完整的文件夹路径(包含父文件夹和所有子文件夹),再用os.path.join(W_dir_path, subfolder)会生成重复的无效路径,导致后续切换目录操作失效却无报错。
  • glob匹配规则错误:glob.glob('/*.csv')是从系统根目录查找CSV文件,而非当前子文件夹,应该去掉开头的斜杠,改用'*.csv',或者直接用绝对路径匹配更稳妥。
  • 依赖os.chdir的风险:切换目录容易因路径异常导致后续操作静默失败,建议直接用完整路径处理文件,避免切换目录。

修复后的代码

import os
import glob
import pandas as pd

W_I0_data_path = "C:/Users/.../W_L3_I0_000_exd.csv"
W_I0_df = pd.read_csv(W_I0_data_path, index_col=None, usecols=[3], names=['I0 Intensity (C/s)'], header=0)
W_dir_path = 'C:/Users/.../W'

# 遍历父文件夹下所有层级的文件夹
for root, _, _ in os.walk(W_dir_path):
    # 用绝对路径匹配当前文件夹下的所有CSV文件
    for csv_file in glob.glob(os.path.join(root, '*.csv')):
        # 跳过用于合并的I0文件,避免重复处理
        if os.path.basename(csv_file) == os.path.basename(W_I0_data_path):
            continue
        temp_df = pd.read_csv(csv_file, index_col=None, usecols=[2,3], names=['Energy (eV)', 'I1 Intensity (C/s)'], header=0)
        merge_df = temp_df.join(W_I0_df, how='left')
        # 生成与CSV同目录的TXT文件
        txt_file_path = f"{csv_file}.txt"
        merge_df.to_csv(txt_file_path, index=False, header=False)

额外优化建议

  • 添加执行日志:在循环中加入print(f"已处理文件:{csv_file},生成TXT:{txt_file_path}"),方便跟踪代码执行进度。
  • 增加文件校验:读取CSV前可添加if os.path.isfile(csv_file):判断,避免无效路径导致的隐性错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:45:56