csv.DictWriter -- TypeError: __init__() takes at least 3 arguments (4 given)
csv.DictWriter -- TypeError: __init__() takes at least 3 arguments (4 given)
我正在尝试将字典列表写入 CSV,但在初始化 csv.DictWriter()
时遇到问题。我有:
fname = "Machine Detection Rate.csv"
with open(fname, "wb") as f:
fieldNames = ["Number of Packets", "Number of Machines"]
writer = csv.DictWriter(f, fieldNames=fieldNames, restval="", dialect="excel",)
writer.writeheader()
for line in machineCounter:
print "Got Here!"
writer.writerow(line)
我得到的错误是:
TypeError: __init__() takes at least 3 arguments (4 given)
我已经尝试了各种参数排列,但似乎无法让它运行。我似乎也找不到其他遇到问题的人。我没有尝试指定的唯一参数是 *args
和 **kwds
。我仍然是菜鸟,尽管阅读过,但我不明白他们在这种情况下是如何工作的。有什么想法吗?
编辑:在最后的 for
循环中,我有 writer.writerows()
没有输出列表中的所有字典。更改为 writer.writerow()
。
参数的名字是fieldnames
(全部小写),不是fieldNames
:
writer = csv.DictWriter(f, fieldnames=fieldNames, restval="", dialect="excel",)
演示:
>>> import csv
>>>
>>> with open('test.csv') as f:
... fieldnames = ["Number of Packets", "Number of Machines"]
... writer = csv.DictWriter(f, fieldNames=fieldnames, restval="", dialect="excel",)
...
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: __init__() takes at least 3 arguments (4 given)
>>>
>>> with open('test.csv') as f:
... fieldNames = ["Number of Packets", "Number of Machines"]
... writer = csv.DictWriter(f, fieldnames=fieldNames, restval="", dialect="excel",)
...
>>> writer
<csv.DictWriter instance at 0x01AD8E90>
>>>
请注意,Python 不会抱怨以下错误:
TypeError: DictWriter got an unexpected keyword argument 'fieldNames'
因为csv.DictWriter
正好有一个**kwds
参数。如果您查看签名,您可以在 documentation 中看到它:
class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
此参数将接受任意数量的关键字参数。
我正在尝试将字典列表写入 CSV,但在初始化 csv.DictWriter()
时遇到问题。我有:
fname = "Machine Detection Rate.csv"
with open(fname, "wb") as f:
fieldNames = ["Number of Packets", "Number of Machines"]
writer = csv.DictWriter(f, fieldNames=fieldNames, restval="", dialect="excel",)
writer.writeheader()
for line in machineCounter:
print "Got Here!"
writer.writerow(line)
我得到的错误是:
TypeError: __init__() takes at least 3 arguments (4 given)
我已经尝试了各种参数排列,但似乎无法让它运行。我似乎也找不到其他遇到问题的人。我没有尝试指定的唯一参数是 *args
和 **kwds
。我仍然是菜鸟,尽管阅读过,但我不明白他们在这种情况下是如何工作的。有什么想法吗?
编辑:在最后的 for
循环中,我有 writer.writerows()
没有输出列表中的所有字典。更改为 writer.writerow()
。
参数的名字是fieldnames
(全部小写),不是fieldNames
:
writer = csv.DictWriter(f, fieldnames=fieldNames, restval="", dialect="excel",)
演示:
>>> import csv
>>>
>>> with open('test.csv') as f:
... fieldnames = ["Number of Packets", "Number of Machines"]
... writer = csv.DictWriter(f, fieldNames=fieldnames, restval="", dialect="excel",)
...
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: __init__() takes at least 3 arguments (4 given)
>>>
>>> with open('test.csv') as f:
... fieldNames = ["Number of Packets", "Number of Machines"]
... writer = csv.DictWriter(f, fieldnames=fieldNames, restval="", dialect="excel",)
...
>>> writer
<csv.DictWriter instance at 0x01AD8E90>
>>>
请注意,Python 不会抱怨以下错误:
TypeError: DictWriter got an unexpected keyword argument 'fieldNames'
因为csv.DictWriter
正好有一个**kwds
参数。如果您查看签名,您可以在 documentation 中看到它:
class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
此参数将接受任意数量的关键字参数。