Запись CSV-файла в Python — примеры

В этом уроке вы узнаете, как записывать данные в файл CSV в Python с помощью встроенного модуля csv.

Содержание

Запись данных в файл CSV

Чтобы записать данные в файл CSV, выполните следующие действия:

  • Сначала откройте файл CSV для записи (режим w) с помощью функции open().
  • Во-вторых, создайте объект записи CSV, вызвав функцию write() модуля csv.
  • В-третьих, запишите данные в файл CSV, вызвав метод writerow() или writerows() объекта записи CSV.
  • Наконец, закройте файл после завершения записи в него данных.

Следующий код иллюстрирует вышеуказанные шаги:

import csv

# open the file in the write mode
f = open('path/to/csv_file', 'w')

# create the csv writer
writer = csv.writer(f)

# write a row to the csv file
writer.writerow(row)

# close the file
f.close()

Это будет короче, если вы используете оператор with, чтобы вам не нужно было вызывать метод close() для явного закрытия файла:

import csv

# open the file in the write mode
with open('path/to/csv_file', 'w') as f:
    # create the csv writer
    writer = csv.writer(f)

    # write a row to the csv file
    writer.writerow(row)

Если вы имеете дело с символами, отличными от ASCII, вам необходимо указать кодировку символов в функции open().

Ниже показано, как записать символы UTF-8 в файл CSV:

import csv

# open the file in the write mode
with open('path/to/csv_file', 'w', encoding='UTF8') as f:
    # create the csv writer
    writer = csv.writer(f)

    # write a row to the csv file
    writer.writerow(row)

Пример записи в CSV-файлы

В следующем примере показано, как записать данные в файл CSV:

import csv  

header = ['name', 'area', 'country_code2', 'country_code3']
data = ['Afghanistan', 652090, 'AF', 'AFG']

with open('countries.csv', 'w', encoding='UTF8') as f:
    writer = csv.writer(f)

    # write the header
    writer.writerow(header)

    # write the data
    writer.writerow(data)

Если вы откроете файл countries.csv, вы увидите одну проблему: в содержимом файла есть дополнительная пустая строка между двумя последующими строками:

Проблема при записи файла countries.csv в Python

Чтобы удалить пустую строку, вам нужно передать аргумент ключевого слова newline=» в функцию open() следующим образом:

import csv

header = ['name', 'area', 'country_code2', 'country_code3']
data = ['Afghanistan', 652090, 'AF', 'AFG']


with open('countries.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.writer(f)

    # write the header
    writer.writerow(header)

    # write the data
    writer.writerow(data)

Выход:

Удаление пустой строки при записи CSV-файла

Как записать несколько строк в файл CSV

Чтобы одновременно записать несколько строк в файл CSV, вы используете метод writerows() объекта записи CSV.

В следующем примере используется метод writerows() для записи нескольких строк в файл countries.csv:

import csv

header = ['name', 'area', 'country_code2', 'country_code3']
data = [
    ['Albania', 28748, 'AL', 'ALB'],
    ['Algeria', 2381741, 'DZ', 'DZA'],
    ['American Samoa', 199, 'AS', 'ASM'],
    ['Andorra', 468, 'AD', 'AND'],
    ['Angola', 1246700, 'AO', 'AGO']
]

with open('countries.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.writer(f)

    # write the header
    writer.writerow(header)

    # write multiple rows
    writer.writerows(data)

Использование класса DictWriter

Если каждая строка файла CSV является словарем, вы можете использовать класс DictWriter модуля csv для записи словаря в файл CSV.

В примере показано, как использовать класс DictWriter для записи данных в файл CSV:

import csv

# csv header
fieldnames = ['name', 'area', 'country_code2', 'country_code3']

# csv data
rows = [
    {'name': 'Albania',
    'area': 28748,
    'country_code2': 'AL',
    'country_code3': 'ALB'},
    {'name': 'Algeria',
    'area': 2381741,
    'country_code2': 'DZ',
    'country_code3': 'DZA'},
    {'name': 'American Samoa',
    'area': 199,
    'country_code2': 'AS',
    'country_code3': 'ASM'}
]

with open('countries.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

Как это работает.

  • Сначала определите переменные, которые содержат имена полей и строки данных файла CSV.
  • Затем откройте файл CSV для записи, вызвав функцию open().
  • Затем создайте новый экземпляр класса DictWriter, передав ему файловый объект(f) и аргумент имен полей.
  • После этого напишите заголовок CSV-файла, вызвав метод writeheader().
  • Наконец, запишите строки данных в файл CSV, используя метод writerows().
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *