尝试使用以下命令读取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
答案 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
,直到该实例用于获取至少一行。