голосование
PHP
BASH
Javascript
HTML
Программы
Firebird
Майнинг
PostgreSQL
Хостинг
Железо
Ресурсы
GIT
SEO
Oracle
Python
Мобильные технологии
Ремонт
Mercurial
Заработок на сайте
Docker
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как записать данные в csv-файл модуль csv Python

Хочу вам показать как записать данные в csv-файл при помощи модуля csv. Немного теории ). Файл CSV – это текстовый файл, в котором каждая строка имеет несколько полей, разделенных запятыми, или другими разделителями: |;:. Каждая разделённая строчка - ряд, а каждое поле — столбец. Формат CSV не имеет стандарта. При правильных настройках модуль csv может распознавать большую часть этих файлов. Вы также можете создавать файлы CSV, используя данный модуль.

Рассмотрим нашу функцию. Функция csv_writer - самописная. В неё передаются три параметра:

  • path - путь (путь + файл). Для серверного программирования ставьте абсолютные пути
  • fieldnames - название полей (столбцов). Советую ставить русские названия.
  • data - данные в виде списка. У вас должен быть большой список из массы маленьких списков.

class DictWriter(csvfile, fieldnames[, restval=""[, extrasaction='raise'[,dialect='excel']]]) Создает пишущий объект, который записывает в CSV-файл строки, получая данные из словаря. Параметр fieldnames обязателен, так как он задает порядок следования полей. Параметр extrasaction указывает на то, какое действие нужно произвести в случае, когда требуемого значения нет в словаре: 'raise' - возбудить исключение ValueError, 'ignore' - игнорировать.

writeheader() - эта функция записывает строку с именами полей (столбцов).


# -*- coding: utf-8 -*-
import csv

def csv_writer(path, fieldnames, data):
    """
    Функция для записи в файл csv
    path - путь до файла
    fieldnames - название столбцов
    data - список из списков
    """
    with open(path, "w", newline='') as out_file:
        '''
        out_file - выходные данные в виде объекта
        delimiter - разделитель :|;
        fieldnames - название полей (столбцов)
        '''
        writer = csv.DictWriter(out_file, delimiter=';', fieldnames=fieldnames)
        writer.writeheader()
        for row in data:
            writer.writerow(row)

# если точка входа наш скрипт
if __name__ == "__main__":
    data = [['lang','name','level'],
            ['PHP','Ivan','1'],
            ['Python','Vladimir','2'],
            ['Javascript','Egor','3']]

    my_list = []
    fieldnames = data[0]
    cell = data[1:]
    print('столбцы', fieldnames)
    print('ячейки(строки)', cell)
    for values in cell:
        print('строки', values)
        inner_dict = dict(zip(fieldnames, values))
        my_list.append(inner_dict)

    path = "dict_output.csv"
    csv_writer(path, fieldnames, my_list)
'''
вывод:
столбцы ['lang', 'name', 'level']
ячейки(строки) [['PHP', 'Ivan', '1'],\
['Python', 'Vladimir', '2'],\
['Javascript', 'Egor', '3']]
строки ['PHP', 'Ivan', '1']
строки ['Python', 'Vladimir', '2']
строки ['Javascript', 'Egor', '3']
'''

Давайте рассмотрим более упрощенный пример без класса DictWriter. Функция writer(csvfile[, dialect='excel'[, fmtparam]]) возвращает пишущий объект для записи пользовательских данных с использованием разделителя в заданный файлоподобный объект. Необязательный аргумент dialect, по умолчанию равный 'excel', указывает на необходимость использования того или иного набора свойств. Узнать доступные варианты можно с помощью csv.list_dialects(). Аргумент может быть одной из строк, возвращаемых указанной функцией, либо экземпляром подкласса класса csv.Dialect. Необязательный аргумент fmtparam служит для переназначения отдельных свойств по сравнению с заданным параметром dialect набором. Вы можете передавать только два параметра: объект для записи и выбранный вами разделитель.


# -*- coding: utf-8 -*-
import csv

def csv_writer(data, path):
    """
    Функция для записи данных в CSV
    """
    with open(path, "w", newline='') as csv_file:
        '''
        csv_file - объект с данными
        delimiter - разделитель
        '''
        writer = csv.writer(csv_file, delimiter=';')
        for line in data:
            writer.writerow(line)


if __name__ == "__main__":
    data = [['name','name_last','lang',],
            ['Ivan', 'Ivanov', 'PHP', ],
            ['Anton', 'Antonov', 'Javascript', ],
            ['Egor', 'Egorov', 'Python', ]]

    path = "output.csv"
    csv_writer(data, path)
'''
вывод:
name;name_last;lang
Ivan;Ivanov;PHP
Anton;Antonov;Javascript
Egor;Egorov;Python
'''

В статье как распарсить csv-файл модуль csv Python я покажу вам как распарсить csv-файл. Вас ждут 2 примера.

просмотры: 7667, уровень: лёгкий уровень, рейтинг: 4, дата: 2017-09-25 22:10:43
проголосовать:

Комментарии:

добавил(а): цйнпгцйгнпрг
дата: 2018-06-15 12:59:54
ок





поиск
реклама
банеры
Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/pingadmin мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/domains домен RU домен RU всего за 99 рублей