无法将Pandas DataFrame写入Excel多工作表,报FileCreateError错误
多DataFrame写入Excel的FileCreateError问题排查与解决
核心问题分析
- 路径拼写错误:代码中路径
/mnt/new/UTPUT/output_files/new.xlsx里的UTPUT是明显拼写错误,应为OUTPUT,直接导致系统无法定位目标目录 - 目标目录未创建:即便路径拼写正确,
/mnt/new/OUTPUT/output_files目录可能不存在,Pandas的ExcelWriter不会自动递归创建不存在的目录 - 权限不足(潜在问题):当前运行代码的用户可能没有目标目录的读写权限,导致无法创建文件
解决建议
- 修正路径拼写:将路径中的
UTPUT替换为OUTPUT,确保路径指向正确位置 - 提前创建目录:初始化
ExcelWriter前,用os.makedirs递归创建目标目录,避免因目录缺失报错。示例代码如下:import os output_dir = '/mnt/new/OUTPUT/output_files' # exist_ok=True表示目录已存在时不会报错 os.makedirs(output_dir, exist_ok=True) - 检查权限:确认运行代码的用户对
/mnt/new/OUTPUT/output_files目录拥有读写权限,必要时通过chmod或chown命令调整权限
修正后的完整代码
import pandas as pd import os from collections import OrderedDict from boltons.iterutils import remap # 创建目标目录(不存在则自动创建) output_dir = '/mnt/new/OUTPUT/output_files' os.makedirs(output_dir, exist_ok=True) # 初始化ExcelWriter writer = pd.ExcelWriter(os.path.join(output_dir, 'new.xlsx'), engine='xlsxwriter') sheets=['0','1','2','3','4'] for item, sheet_name in zip(data, sheets): # 清理空值项 drop_none = lambda path, key, value: key is not None and value is not None cleaned_data = remap(item, visit=drop_none) flattened_data = flatten(cleaned_data) # 需确保flatten函数已正确定义 df = pd.DataFrame(data=flattened_data) display(df) df.to_excel(writer, sheet_name=sheet_name) writer.save()
内容的提问来源于stack exchange,提问作者Harshith K R
相关产品推荐
相关产品推荐

