Документация по Python. Теоретические материалы, и практические задачи

csv файл python

В предыдущих статьях я уже писал о том, что Python довольно многогранен, и может работать с огромными типами файлов. Одним из часто используемых форматов является формат csv. Csv файл предоставляет удобный вариант хранения информации. Аббревиатура csv  — Comma Separated Values, название логичное, исходя из структуры самого файла. Каждая строка,это отдельная запись разделенная запятыми. Не будем далеко уходить в теорию и историю, а сразу начнем с примера:

                    
import csv
 
NAME = "friends.csv"
 
friends = [
    ["Kevin", 28],
    ["Alice", 23],
    ["Joe", 34]
]
 
with open(NAME, "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(friends)
     
 
with open(NAME, "a", newline="") as file:
    user = ["Tima", 31]
    writer = csv.writer(file)
    writer.writerow(user)

Разбираем вышеописанный код:

    1. В самом начале, мы импортируем модуль для работы с файлом csv.
    2. Создаем сам файл friends.csv
    3. В созданный файл, мы записываем двумерный список, по факту у нас получается таблица, где каждая строка является представлением одного нашего друга. Каждая строка содержит два поля, имя  и возраст. По сути мы создали таблицу из трех строк и двух столбцов.
    4. При открытии файла на запись, передаем значение newline=»» с пустой строкой.
    5. Для записи мы получаем объект writer, который возвращает нам функция csv.writer(file)
    6. Запись производится методом writer.writerows(friends), в данном случае этот метод принимает созданный нами в самом начале двумерный список
    7. В случае, если нам надо добавить только одну запись, можно воспользоваться методом write.writerow(friends)

После запуска нашего небольшого приложения, рядом со скриптом появится файл friends.csv. Внутри него будет следующий результат:

                    
Kevin  -  28
Alice  -  23
Joe  -  34
Tima - 31

Выше мы разобрали запись в файл, ниже приведу пример чтения из csv файла. Для чтения, нам необходимо создать объект reader (в Python мы всегда по названию понимаем, что для чего нужно).

                    
import csv
 
NAME = "friends.csv"
 
with open(NAME, "r", newline="") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row[0], " - ", row[1])

Все достаточно просто.

  1. Импортируем модуль для работы с csv
  2. Открываем наш файл, и незабываем указать значение newline=»»
  3. Получаем объект reader
  4. Запускаем цикл for и перебираем все строки

Результат выполнения:

                    
Kevin - 28 
Alice - 23 
Joe - 34 
Tima - 31

Запись словаря в csv

В примерах, которые мы рассматривали, все записи являлись отдельными списками, как например, [«Tima»,31]. Модуль csv имеет так же имеет функционал который используется для работы со словарями.

  1. csv.DictWriter() — Для записи в файл
  2. csv.DictReader() — Для чтения из файла
                    
import csv
 
FILENAME = "users.csv"
 
users = [
    {"name": "Tom", "age": 28},
    {"name": "Alice", "age": 23},
    {"name": "Bob", "age": 34}
]
 
with open(FILENAME, "w", newline="") as file:
    columns = ["name", "age"]
    writer = csv.DictWriter(file, fieldnames=columns)
    writer.writeheader()
     
    # запись нескольких строк
    writer.writerows(users)
     
    user = {"name" : "Sam", "age": 41}
    # запись одной строки
    writer.writerow(user)
 
with open(FILENAME, "r", newline="") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row["name"], "-", row["age"])

Как вы можете заметить, запись строк так же производилась с использованием методов writerow() и writerows(). Но, теперь вместо списков, у нас каждая строка является отдельным словарем, и тут мы можем использовать еще и дополнительный метод writeheader(), который производит запись заголовков столбцов.

Оставьте комментарий

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