Запись и чтение файлов
Работа с модулем csv подробно http://ideafix.name/wp-content/uploads/2012/05/Python-7.pdf
Python. Лекция 7. Работа с данными
в различных форматах.
Формат CSV
Файл в формате CSV (comma-separated values - значения, разделенные запятыми) -
универсальное средство для переноса табличной информации между приложениями
(электронными таблицами, СУБД, адресными книгами и т.п.). К сожалению, формат
файла не имеет строго определенного стандарта, поэтому между файлами,
порождаемыми различными приложениями, существуют некоторые тонкие различия.
Внутри файл выглядит примерно так (файл pr.csv ):
name,number
a,1
b,2
c,3
Для работы с CSV-файлами имеются две основные функции:
reader(csvfile[, dialect='excel'[, fmtparam]])
Возвращает читающий объект, который является итератором по всем строкам
заданного файла. В качестве csvfile может выступать любой объект, который
поддерживает протокол итератора и возвращает строку при обращении к его методу
next(). Необязательный аргумент dialect, по умолчанию равный 'excel', указывает
на необходимость использования того или иного набора свойств. Узнать доступные
варианты можно с помощью csv.list_dialects(). Аргумент может быть одной из
строк, возвращаемых указанной функцией, либо экземпляром подкласса класса
csv.Dialect. Необязательный аргумент fmtparam служит для переназначения
отдельных свойств по сравнению с заданным параметром dialect набором. Все
получаемые данные являются строками.
writer(csvfile[, dialect='excel'[, fmtparam]])
Возвращает пишущий объект для записи пользовательских данных с
использованием разделителя в заданный файлоподобный объект. Параметры dialect и
fmtparam имеют тот же смысл, что и выше. Все данные, кроме строк, обрабатывают
функцией str() перед помещением в файл.
В следующем примере читается CSV-файл и записывается другой, где числа
второго столбца увеличены на единицу:
import csv
input_file = open("pr.csv", "rb")
rdr = csv.reader(input_file)
output_file = open("pr1.csv", "wb")
wrtr = csv.writer(output_file)
for rec in rdr:
try:
rec[1] = int(rec[1]) + 1
except:
pass
wrtr.writerow(rec)
input_file.close()
output_file.close()
В результате получится файл pr1.csv следующего содержания:
name,number
a,2
b,3
c,4
|