Запись CSV-файла в Python — примеры
В этом уроке вы узнаете, как записывать данные в файл CSV в Python с помощью встроенного модуля csv.
- Запись данных в файл CSV
- Пример записи в CSV-файлы
- Как записать несколько строк в файл CSV
- Использование класса DictWriter
Запись данных в файл 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, вы увидите одну проблему: в содержимом файла есть дополнительная пустая строка между двумя последующими строками:
Чтобы удалить пустую строку, вам нужно передать аргумент ключевого слова 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, вы используете метод 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().