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

Python合并CSV文件报错:无法识别Excel格式及非压缩文件错误

问题分析与解决方案

核心错误原因

  • 你目标是合并CSV文件,但代码误用了pd.read_excel()读取文件——CSV是纯文本格式,不属于Excel文件体系,自然会触发格式识别错误;后续添加engine='openpyxl'无效,因为openpyxl仅支持xlsx/xlsb这类基于zip压缩的Excel格式,CSV并非压缩包,所以出现file is not a zip file报错。
  • 最后保存时用to_csv()却将文件名设为Final.xlsx,格式不匹配,会导致生成的文件无法被Excel正常识别。

修正后的代码

import pandas as pd
import os

data_location = ""  # 替换为你的CSV文件所在目录路径
desired_headings = ["DSP CODE", "TERRITORY", "PPD", "CURRENCY"]
df_total = pd.DataFrame(columns=desired_headings)

# 只遍历目录中的CSV文件,避免读取无关文件
for file in os.listdir(data_location):
    if file.endswith(".csv"):
        # 用os.path.join拼接路径,适配Windows/Linux不同路径分隔符
        file_path = os.path.join(data_location, file)
        # 用pd.read_csv读取CSV文件,这才是正确的读取方式
        df_file = pd.read_csv(file_path)
        # 提前检查文件是否包含所需列,避免KeyError
        valid_columns = [col for col in desired_headings if col in df_file.columns]
        if valid_columns:
            selected_columns = df_file.loc[:, valid_columns]
            # 将新数据追加到总表末尾,符合常规合并逻辑
            df_total = pd.concat([df_total, selected_columns], ignore_index=True)

# 按需选择保存格式
# 保存为CSV(推荐,保持源格式一致性)
df_total.to_csv("Final.csv", index=False)
# 若需保存为Excel,需先安装openpyxl(pip install openpyxl),再执行下面代码
# df_total.to_excel("Final.xlsx", index=False, engine="openpyxl")

关键修正点说明

  • 替换pd.read_excel()为pd.read_csv(),匹配CSV文件的读取需求。
  • 添加file.endswith(".csv")过滤条件,避免读取目录中的隐藏文件、非CSV格式文件。
  • 使用os.path.join()拼接路径,解决跨操作系统的路径分隔符问题。
  • 增加列有效性检查,防止部分CSV文件缺少指定列时抛出错误。
  • 修正保存逻辑:CSV格式对应to_csv()+.csv后缀;Excel格式对应to_excel()+指定engine="openpyxl"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:54:29