Сообщить об ошибке.

Класс DictWriter() модуля csv в Python

Записать CSV файл как список словарей

Синтаксис:

import csv

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

Параметры:

Возвращаемое значение:

Описание:

Класс DictWriter() модуля csv создает объект, который работает как csv.writer(), но позволяет передавать строку с данными на запись как словарь, ключи которой задаются необязательным параметром fieldnames.

Параметр fieldnames представляет собой последовательность ключей, определяющих порядок значений в словаре, в котором метод writer.writerow() записывает данные в файловый объект f.

Необязательный параметр restval указывает значение, которое будет записано, если в словаре отсутствует ключ в именах полей.

Если словарь, переданный методу writer.writerow() , содержит ключ, не найденный в именах полей fieldnames, необязательный параметр extrasaction указывает, какое действие предпринять.

  • Если extrasaction установлено значение 'raise' - значение по умолчанию, то поднимается исключение ValueError.
  • Если extrasaction установлено 'ignore', дополнительные значения в словаре игнорируются.

Любые другие необязательные аргументы *args или ключевые аргументы **kwds передаются базовому экземпляру csv.writer().

Обратите внимание, что в отличие от класса csv.DictReader(), аргумент fieldnames (заголовки полей CSV файла) класса csv.DictWriter является обязательным.

Примеры использования:

import csv

with open('names.csv', 'w', newline='') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
# 13
# 13
# 16

# теперь читаем, что получилось
with open('names.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['first_name'], row['last_name'])

# Baked Beans
# Lovely Spam
# Wonderful Spam