Module (36%)
Section (33%)

Обработка текстовых файлов: продолжение

Последний пример, который мы хотим представить, показывает очень интересную черту объекта, возвращаемого функцией open() в текстовом режиме.

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

Странно? Ничуть. Полезно? Да, очень.

 

Протокол итерации, определенный для файлового объекта, очень прост - его метод __next__ просто возвращает следующую строку, прочитанную из файла.

Более того, Вы можете ожидать, что объект автоматически вызовет close(), когда любой из прочитанных файлов достигнет конца файла.

Посмотрите на редактор и посмотрите, насколько простым и понятным теперь стал код.



Code

from os import strerror

try:
character_counter = line_counter = 0
for line in open('text.txt', 'rt'):
line_counter += 1
for char in line:
print(char, end='')
character_counter += 1
print("\n\nCharacters in file:", character_counter)
print("Lines in file: ", line_counter)
except IOError as e:
print("I/O error occurred: ", strerror(e.errno))
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×