Python CSV 头部错误

0 投票
2 回答
1086 浏览
提问于 2025-04-15 19:48

我在尝试读取一个csv文件的表头,代码是:

reader = csv.DictReader(open(PATH_FILE),skipinitialspace=True)
headers = reader.fieldnames

for header in sorted(set(headers)):

在开发服务器上运行得很好,但在生产环境中却出现了这个错误:

'NoneType' object is not iterable

调试时显示表头的值是None,而这个csv文件里其实是有表头的。

headers:None

2 个回答

1

也许你在开发服务器和生产环境中使用了不同的Python版本?在Python 2.5中,DictReader这个实例的fieldnames属性在你用它获取至少一行数据之前是None,也就是没有值。

2

来自csvreader.fieldnames的说明

如果在创建对象时没有作为参数传入,这个属性会在第一次访问时或读取文件的第一条记录时初始化

所以你可以尝试先读取文件的第一行,这样reader.fieldnames就应该包含你需要的数据。也许可以加上reader.next()来实现:

reader = csv.DictReader(open(PATH_FILE),skipinitialspace=True)
reader.next()
headers = reader.fieldnames

说明中还提到:

在2.6版本中有所更改。

所以这种行为的不同可能是因为你们两个系统的Python版本不同。

撰写回答