Обработка текстовых файлов: продолжение
Последний пример, который мы хотим представить, показывает очень интересную черту объекта, возвращаемого функцией open()
в текстовом режиме.
Мы думаем, что это может Вас удивить - объект является экземпляром итерируемого класса.
Странно? Ничуть. Полезно? Да, очень.
Протокол итерации, определенный для файлового объекта, очень прост - его метод __next__
просто возвращает следующую строку, прочитанную из файла. р>
Более того, Вы можете ожидать, что объект автоматически вызовет close()
, когда любой из прочитанных файлов достигнет конца файла.
Посмотрите на редактор и посмотрите, насколько простым и понятным теперь стал код.
Code
from os import strerrortry:
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 }}
×