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

Pandas DataFrame.to_csv报FileNotFoundError,生产环境异常求助

问题排查与解决方案

可能的报错原因及对应修复

  • 工作表名称含非法字符:生产环境中出错的工作表名可能包含系统不允许的文件夹命名字符(如/ \ : * ? " < > |),导致创建文件夹失败。
    修复:创建文件夹前清洗工作表名称,替换非法字符:

    import re
    # 将所有非法文件夹字符替换为下划线
    clean_sheet_name = re.sub(r'[\\/*?:"<>|]', '_', sheet_name)
    sheet_folder_path = os.path.join(processed_directory, clean_sheet_name)
    
  • 文件路径过长:生产环境的processed_directory路径加上工作表名、文件名后,超出系统允许的最大路径长度(Windows默认260字符)。
    修复:

    1. 缩短processed_directory的基础路径
    2. 简化CSV文件名,比如仅保留工作表名:csv_file_name = f"{clean_sheet_name}.csv"
    3. 创建文件夹时使用exist_ok=True简化逻辑,避免重复判断
  • 权限不足:生产环境下程序没有目标文件夹的读写权限,或对应文件夹被占用/设为只读。
    修复:

    • 检查processed_directory的权限,确保运行程序的用户拥有读写权限
    • 创建文件夹时指定权限参数:os.makedirs(sheet_folder_path, exist_ok=True, mode=0o775)
  • 数据编码问题:出错的工作表数据包含特殊编码字符,导致to_csv写入失败。
    修复:指定兼容的编码格式,比如utf-8-sig(适配Windows):

    df.to_csv(csv_file_path, index=False, sep='~', encoding='utf-8-sig')
    

优化后的完整代码

整合上述修复,并添加异常捕获方便定位问题:

import os
import re
import pandas as pd

for sheet_name in xls.sheet_names:
    try:
        df = pd.read_excel(xls, sheet_name=sheet_name, dtype=str, keep_default_na=False)
        # 清洗工作表名称
        clean_sheet_name = re.sub(r'[\\/*?:"<>|]', '_', sheet_name)
        # 简化CSV文件名
        csv_file_name = f"{clean_sheet_name}.csv"
        sheet_folder_path = os.path.join(processed_directory, clean_sheet_name)
        # 自动创建文件夹(已存在则跳过)
        os.makedirs(sheet_folder_path, exist_ok=True, mode=0o775)
        csv_file_path = os.path.join(sheet_folder_path, csv_file_name)                        
        
        # 指定编码写入CSV
        df.to_csv(csv_file_path, index=False, sep='~', encoding='utf-8-sig')
    except Exception as e:
        # 打印错误信息并记录日志
        print(f"处理工作表 {sheet_name} 时出错: {str(e)}")
        with open("csv_export_error_log.txt", "a", encoding="utf-8") as f:
            f.write(f"{pd.Timestamp.now()} | 工作表: {sheet_name} | 错误信息: {str(e)}\n")

额外排查技巧

  • 手动检查出错的Excel文件,确认工作表名是否有特殊字符、数据是否存在异常内容
  • 在生产环境运行时,打印出错的csv_file_path,检查路径是否合法、长度是否超标
  • 单独提取出错的文件进行测试,缩小排查范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:43:12