Mac环境下使用pandas读取CSV触发EmptyDataError的问题求助
修复Mac环境下CSV读取报错的方案
核心问题根因
两个连续报错是独立问题叠加导致的,没有逻辑上的关联:
- 误将CSV文件作为SQLite数据库连接,触发
OperationalError: unable to open database file - 路径写法不符合Mac系统规则,导致pandas读到空文件,触发
EmptyDataError: No columns to parse from file
分项排查与修复
1. 纠正SQLite连接的逻辑错误
sqlite3.Connection()仅支持打开SQLite格式生成的.db/.sqlite二进制数据库文件,完全不支持直接解析CSV格式文件。
- 之前直接把CSV路径传给sqlite连接的写法本身逻辑不成立,哪怕路径完全正确也一定会报数据库打开失败的错误。
- 如果需要用SQLite查询CSV数据,正确流程是:
- 先用pandas正常读取CSV拿到DataFrame对象
- 建立空的SQLite连接后,通过
DataFrame.to_sql()方法将CSV数据写入SQLite库中,再执行后续查询
2. 修正Mac环境下的路径写法
你之前写的两个路径都不符合Mac系统的路径规则:
- 错误写法1(Windows反斜杠格式):
Users\syedwaqar\Huma-IBM-ML\healthcare-dataset-stroke-data.csv
Mac系统下反斜杠是字符串转义符,\s、\H这类转义序列会被解析成特殊控制字符,完全无法匹配到真实路径。 - 错误写法2(缺根目录斜杠的相对路径):
Users/syedwaqar/Huma-IBM-ML/healthcare-dataset-stroke-data.csv
Mac系统的绝对路径必须以根目录的/开头,缺了开头斜杠后,程序会从当前代码运行的工作目录下,找名为Users的子文件夹,根本定位不到你存储在系统用户目录下的CSV文件。 - 正确的绝对路径写法:
/Users/syedwaqar/Huma-IBM-ML/healthcare-dataset-stroke-data.csv
3. 解决pandas读取触发的EmptyDataError
这个报错的触发条件是pandas读到的目标文件没有任何可解析的列内容(通常是文件大小为0)。
很多人会疑惑为什么路径错了没报FileNotFoundError反而报文件为空——这是因为Python在拼接路径时,会在相对路径指向的目录下匹配到同名的0字节占位文件,导致pandas根本没打开你本地存储的有真实数据的CSV。
可以在执行pd.read_csv()之前加几行校验代码,确认路径指向的文件状态:
import os target_path = "/Users/syedwaqar/Huma-IBM-ML/healthcare-dataset-stroke-data.csv" # 校验1:路径是否能匹配到真实存在的文件 print("文件是否存在:", os.path.exists(target_path)) # 校验2:文件大小是否为非0 print("文件大小(字节):", os.path.getsize(target_path))
- 如果校验返回文件不存在,直接把文件从Finder拖入终端,就能自动生成真实的绝对路径,替换掉代码里的路径即可
- 如果校验返回文件大小为0,说明路径指到了空文件,替换成正确路径后就能正常读取
内容的提问来源于stack exchange,提问作者S HUMA SHAH
相关产品推荐
相关产品推荐

