csv.DictWriter – TypeError: __init __ () принимает не менее 3 аргументов (4 данных)

Я пытаюсь написать список словарей в CSV, и у csv.DictWriter() возникают проблемы с инициализацией 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 . Я все еще ноб и, несмотря на чтение, я не понимаю, как они работают в этой ситуации. Есть идеи?

Изменить: в финальном цикле у меня был writer.writerows() который не writer.writerows() все dicts в списке. Изменено для writer.writerow() .

One Solution collect form web for “csv.DictWriter – TypeError: __init __ () принимает не менее 3 аргументов (4 данных)”

Имя параметра – это 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 . Вы можете увидеть это в документации, если вы посмотрите на подпись:

class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

Этот параметр принимает любое количество аргументов ключевого слова.

  • Чтение строк из файла CSV в Python
  • Как загрузить файл с Python, Selenium и PhantomJS
  • разбор текстового файла с JSON-подобным объектом в CSV
  • Как сохранить список в виде CSV-файла с помощью python с новыми строками?
  • AttributeError: объект 'module' не имеет атрибута 'reader'
  • Как передать 2 символа в «разделителе» с помощью модуля «csv»?
  • Импорт и обработка текстового файла в MySQL
  • Как я могу предотвратить csv.DictWriter () или writow () округление моих поплавков?
  • Python - лучший язык программирования в мире.