python csv头错误

时间:2010-02-28 03:49:28

标签: 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

调试显示标题包含无值,而csv文件中包含标题。

headers:None

2 个答案:

答案 0 :(得分:2)

来自csvreader.fieldnames documentation

  

如果在创建对象时未作为参数传递,则在首次访问时或从文件中读取第一条记录时初始化此属性

因此,尝试从文件中读取第一行,然后reader.fieldnames应包含您需要的数据。也许就像添加reader.next()

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

文档还说:

  

在2.6版中更改。

因此,这种行为差异可能是由于两个系统之间的Python版本存在差异。

答案 1 :(得分:1)

也许你在开发服务器和生产中使用不同的Python版本?在Python 2.5中,fieldnames实例的DictReader属性为None,直到该实例用于获取至少一行。