首页 > 解决方案 > writer.writeheader() - 无法识别传入标题的字典字段

问题描述

我正在使用以下代码编写传递给函数的字典到使用 python 的 csv 文件

def addToLog(self,content):
    filename = "myfile.csv"
    fileds = content.keys()
    print "Inside Add to Log"
    print fileds
    with open(filename,'w') as csvfile:
        writer = csv.DictWriter(csvfile,fieldnames=fileds)
        writer.writeheader()
        writer.writerows(content)

在这里,我尝试使用字典函数动态获取字段列表,但是当我尝试执行上述文件时,出现以下错误。

ValueError: dict contains fields not in fieldnames: 'n', 'a', 'm', 'e'

但是,如上述功能中所述打印时的键如下:

['name', 'dob', 'gender', 'phone', 'email']

无法发现问题。

标签: pythonpython-2.7

解决方案


您正在尝试将单个字典写入文件。为此,请使用DictWriter.writerow而不是DictWriter.writerows.

这里发生的情况是writerows(注意复数“s”)将尝试遍历content以写入每个元素,因为它假设您传入的是字典的可迭代内容。但是,如果您遍历单个字典,您将获得它的键,每个键都不是包含您在创建 DictWriter 时提到的字段名称的字典。


推荐阅读