Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 163

150

Во всех предыдущих примерах в результате получалась одна строка poem.

Функция readline() считывает по одной строке за раз и возвращает список этих

строк:

>>> fin = open('relativity', 'rt' )

>>> lines = fin.readlines()

>>> fin.close()

>>> print(len(lines), 'lines read')

5 lines read

>>> for line in lines:

... print(line, end='')

...

Ввод информации в файлы и ее вывод из них

215

There was a young lady named Bright,

Whose speed was far faster than light;

She started one day

In a relative way,

And returned on the previous night.>>>

Мы указали функции print() не добавлять автоматически символы новой стро-

ки, поскольку первые четыре строки сами их имеют. В последней строке этого

символа не было, что заставило интерактивное приглашение появиться сразу после

последней строки.

Записываем данные в бинарный файл

с помощью функции write()

Если вы включите символ 'b' в строку режима, файл будет открыт в бинарном

режиме. В этом случае вы вместо чтения и записи строк будете работать с бай-

тами.

У нас под рукой нет бинарного стихотворения, поэтому мы просто сгенерируем

256 байтовых значений от 0 до 255:

>>> bdata = bytes(range(0, 256))

>>> len(bdata)

256

Откроем файл для записи в бинарном режиме и запишем все данные сразу:

>>> fout = open('bfile', 'wb')

>>> fout.write(bdata)

256

>>> fout.close()

И вновь функция write() возвращает количество записанных байтов.

Как и в случае с текстом, вы можете записывать бинарные данные фрагментами:

>>> fout = open('bfile', 'wb')

>>> size = len(bdata)

>>> offset = 0

>>> chunk = 100

>>> while True:

... if offset > size:

... break

... fout.write(bdata[offset:offset+chunk])

... offset += chunk

...