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

>>> len(poem)

150

Вы можете указать максимальное количество символов, которое функция read()

вернет за один вызов. Давайте считывать по 100 символов за раз и присоединять

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

>>> poem = ''

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

>>> chunk = 100

>>> while True:

... fragment = fin.read(chunk)

... if not fragment:

... break

... poem += fragment

...

>>> fin.close()

>>> len(poem)

150

214

Глава 8. Данные должны куда-то попадать

После того как вы считали весь файл, дальнейшие вызовы функции read() будут

возвращать пустую строку (' '), которая будет оценена как False в проверке if not

fragment. Это позволит выйти из цикла while True.

Вы также можете считывать файл по одной строке за раз с помощью функции

readline(). В следующем примере мы будем присоединять каждую строку к строке

poem, чтобы воссоздать оригинал:

>>> poem = ''

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

>>> while True:

... line = fin.readline()

... if not line:

... break

... poem += line

...

>>> fin.close()

>>> len(poem)

150

Для текстового файла даже пустая строка имеет длину, равную 1 (символ новой

строки), такая строка будет считаться True. Когда весь файл будет считан, функция

readline() (как и функция read()) возвратит пустую строку, которая будет считать-

ся False.

Самый простой способ считать текстовый файл — использовать итератор.

Он будет возвращать по одной строке за раз. Этот пример похож на предыдущий,

но кода в нем меньше:

>>> poem = ''

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

>>> for line in fin:

... poem += line

...

>>> fin.close()

>>> len(poem)