Python中.readlines()读取CSV文件返回空列表的问题求助
解决Python读取CSV文件返回空列表的问题
先排查文件路径问题
很多时候出现这种情况是因为程序运行的工作目录和你默认的文件所在目录不一致。先打印当前工作目录确认:
import os print(os.getcwd())
如果输出路径不是dataset.csv所在的目录,要么把文件移到该目录,要么读取时直接用绝对路径,比如:
with open('/Users/xxx/Desktop/dataset.csv', 'r', encoding='utf-8') as f: lines = f.readlines()
避开文件打开模式的坑
- 要是之前用
'a'模式打开过这个文件再读取,'a'模式会把文件指针直接定位到末尾,哪怕之后改回'r',只要没重新打开文件,指针还是在末尾,读出来自然是空。必须重新打开文件,不能只改模式。 - 打开文件时记得指定编码,比如文件是UTF-8编码但没明确指定,可能会出现隐性编码错误,导致读取内容为空。
使用csv模块的正确姿势
拿到csv.reader对象后直接打印是看不到内容的,因为它是迭代器,得转成列表或者遍历查看:
import csv # 用绝对路径打开文件 with open('/path/to/dataset.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) # 转成列表查看完整内容 rows = list(reader) print(rows)
如果还是空,检查文件是不是真的有有效内容——比如是不是全是空白行,或者只是后缀改了.csv实际是其他格式的文件。
其他排查点
- 看看文件是不是被其他程序锁定了(比如Excel还打开着),导致Python没法读取完整内容。
- 用文本编辑器打开文件,检查有没有特殊字节标记(比如BOM),有的话打开时指定
encoding='utf-8-sig'处理。
内容的提问来源于stack exchange,提问作者amy-elouise
相关产品推荐
相关产品推荐

