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

Pandas读取archorg.csv报EmptyDataError,交互环境却可正常读取

Pandas读取CSV触发EmptyDataError,但交互环境可正常加载的问题解决

问题场景

我在处理两个包含两列、逗号分隔的CSV文件,已经通过time.sleep()确保文件写入完成后,再用Pandas加载数据,执行以下代码时出现异常:

onlinedf = pd.read_csv('/home/kia/Code/update/data/archorg.csv')
pacmandf = pd.read_csv('/home/kia/Code/update/data/pacman.csv')

报错信息

Traceback (most recent call last):
  File "/home/kia/Code/update/main.py", line 28, in <module>
    ugh = main()
  File "/home/kia/Code/update/main.py", line 20, in __init__
    filemgr.loadfiles()
  File "/home/kia/Code/update/files.py", line 10, in loadfiles
    onlinedf = pd.read_csv('/home/kia/Code/update/data/archorg.csv')
  File "/usr/lib/python3.10/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 680, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 575, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 934, in __init__
    self._engine = self._make_engine(f, self.engine)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/readers.py", line 1236, in _make_engine
    return mapping[engine](f, **self.options)
  File "/usr/lib/python3.10/site-packages/pandas/io/parsers/c_parser_wrapper.py", line 75, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas/_libs/parsers.pyx", line 551, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file

异常现象

  • 调换文件读取顺序后,pacman.csv可正常加载,但archorg.csv仍报相同错误
  • 在Python交互环境中逐行执行读取代码,却能正常加载出228行数据:
>>> import pandas as pd
>>> pd.read_csv('/home/kia/Code/update/data/archorg.csv')
                  package     version
0          python-dulwich   0.20.45-1
1              sqlite-tcl    3.39.1-1
2              sqlite-doc    3.39.1-1
3         sqlite-analyzer    3.39.1-1
4                  sqlite    3.39.1-1
..                    ...         ...
223     python-voluptuous    0.13.1-1
224     python-tldextract     3.3.1-1
225    perl-file-mimeinfo      0.33-1
226  perl-crypt-passwdmd5      1.42-1
227      perl-test-simple  1.302191-1

[228 rows x 2 columns]

排查步骤

已手动检查archorg.csv文件格式,未发现多余逗号、空格或明显格式问题。

解决方法

最终通过两个调整解决了问题:

  1. 读取CSV时显式指定sep参数,明确告诉Pandas使用逗号作为分隔符:
onlinedf = pd.read_csv('/home/kia/Code/update/data/archorg.csv', sep=',')
  1. 替换原有的字符串拼接写入CSV的方式,改用Python标准库的csv模块完成文件写入操作。

可能原因

  • 字符串拼接写入CSV时,容易出现隐藏的格式问题,比如换行符不统一、编码异常、行尾残留特殊字符等,这些问题在手动检查或交互环境中可能被忽略,但会导致Pandas的解析器无法识别有效列
  • 显式指定sep参数可以避免Pandas自动推断分隔符时出现偏差,确保解析逻辑一致
  • csv模块会自动处理CSV格式的细节(如引号、换行符、分隔符转义等),相比字符串拼接能生成更规范的CSV文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:24:23