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)