Python CSV 头部错误
我在尝试读取一个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
如果在创建对象时没有作为参数传入,这个属性会在第一次访问时或读取文件的第一条记录时初始化。
所以你可以尝试先读取文件的第一行,这样reader.fieldnames
就应该包含你需要的数据。也许可以加上reader.next()
来实现:
reader = csv.DictReader(open(PATH_FILE),skipinitialspace=True)
reader.next()
headers = reader.fieldnames
说明中还提到:
在2.6版本中有所更改。
所以这种行为的不同可能是因为你们两个系统的Python版本不同。