Объект чтения Reader
- это экземпляры класса csv.DictReader()
и объекты, возвращаемые функцией csv.reader()
, которые имеют следующие открытые методы и атрибуты:
import csv reader = csv.reader() reader = csv.DictReader()
reader.__next__
,reader.dialect
,reader.line_num
,reader.fieldnames
,reader.__next__()
:Метод reader.__next__
возвращает следующую строку объекта чтения проанализированную в соответствии с текущим диалектом csv.Dialect.
Строка будет в виде списка, если объект был возвращен из csv.reader()
или словаря dict
, если это экземпляр csv.DictReader()
.
reader.dialect
:Атрибут reader.dialect
доступный только для чтения, представляет собой описание диалекта, используемого синтаксическим анализатором.
reader.line_num
:Атрибут reader.line_num
возвращает количество строк, прочитанных из исходного итератора. Это не то же самое, что количество возвращаемых записей, поскольку записи могут занимать несколько строк.
reader.fieldnames
:Атрибут reader.fieldnames
имеет только объект csv.DictReader()
.
Если этот параметр не передается в качестве параметра fieldnames
при создании объекта чтения, то этот атрибут инициализируется при первом доступе или при чтении первой записи из файла CSV.
import csv # сначала запишем файл 'names.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'}) # читаем CSV файл и смотрим как # работают атрибуты и метод. csvfile = open('names.csv', newline='') reader = csv.DictReader(csvfile) print('Диалект: ', reader.dialect) print('Следующая строка: ', reader.__next__()) print('Прочитано строк: ', reader.line_num) print('Имена полей: ', reader.fieldnames) csvfile.close() # Диалект: excel # Следующая строка: OrderedDict([('first_name', 'Baked'), ('last_name', 'Beans')]) # Прочитано строк: 2 # Имена полей: ['first_name', 'last_name']