Чтение информации из текстового файла
Теперь рассмотрим, каким образом прочитать информацию, которая уже находится в текстовом файле. Для этого мы вновь воспользуемся оператором open, синтаксис которого останется тем же самым, за исключением значений параметра Режим доступа.
Задача 1. Разработайте программу, которая позволит прочитать информацию об автомобилях, содержащуюся в текстовом файле.
В операторе open("avto.txt", "г", encoding^utf-8') мы изменили только режим доступа. При записи в файл использовался режим Mw+M, сейчас "г", который, как было сказано выше, используется при чтении информации из файла. Метод read() с пустыми круглыми скобками используется по отношению к файловой переменной chtenie для чтения всей информации из файла. Далее методом close() мы закрываем файл. Код программы, с помощью которого мы прочитаем информацию из ранее созданного текстового файла, выглядит так, как он представлен в листинге 135.
Листинг 135
chtenie=open("avto.txt", "г", encoding='utf-8') print (chtenie.read())
chtenie.closeQ_
Результат работы программы представлен на рис. 143.

1$ Python 3.5.1 Shell
File Edit Shell Debug Options Window Help
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on Win32 Type ncopyright", "credits" or "license))" for more information.
»>
RESTART: C:/изегз/Сергей/AppData/Local/Program s/Python/Python35-32/Mon проекты/Чтение из файл a.py Жигули 1990 белый Волга 1989 красный
»>
Ln
--ч
: 12 Col: 4 |
Рис. 143. Информация, прочитанная из файла
При работе с файлами возможно возникновение ошибок, связанных, например, с обработкой пути к файлу. Соответственно, такой тип ошибок можно перехватить, используя обработку исключений. Если предположить, что в указанном ниже примере (листинг 136) ошибочно задан путь к файлу avto.txt, то программа выдаст сообщение "Ошибка при открытии файла". Принципы работы конструкции try...except рассматривались нами в параграфе 2.2.
Листинг 136
try:
chtenie=open("c:Primeravto.txt", "г", encoding='utf-8') except:
ргіпД"Ошибка при открытии файла")_
else:
print (chtenie.read())
chtenie.closeQ_
Если в скобках метода read() указать значение, например десять (листинг 137), то с помощью такой записи можно будет прочитать десять символов строки. Вновь использованный в программе метод read(), с указанием какого-либо значения, например, пять (print (chtenie.read(5))), даст возможность прочитать следующие пять символов строки.
Листинг 137
chtenie=open("avto.txt", "г", encoding-utf-8')
print (chtenie.read(lO)) Считаем десять символов строки
print (chtenie.read(5)) Считаем следующие пять символов строки
chtenie.closeQ_
Если нужно прочитать некий текст, содержащийся в файле, построчно, то тогда следует использовать метод, отличие которого от метода read() заключается в том, что читать символы можно только в текущей строке. Обратите внимание: метод read() в закомментируемом ниже операторе (листинг 138) прочтет содержимое всего файла, между тем, как метод readline() прочтет только первую строку (рис. 144).
Листинг 138
chtenie=open("avto.txt", "г", encoding-utf-8')
#print (chtenie.read()) print (chtenie.readline())
chtenie.closeQ_

Python 3.5.1 Shell

Рис. 144. Построчное чтение информации с помощью метода readline()