М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет152/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   148   149   150   151   152   153   154   155   ...   334
Байланысты:
Изучаем Python

5
Second number: 
0
You can't divide by 0! 
First number: 
5
Second number: 
2
2.5 
First number: 
q
Блок 
try
-
except
-
else
работает так: Python пытается выполнить код в блоке 
try

В блоках 
try
следует размещать только тот код, при выполнении которого может 
возникнуть исключение. Иногда некоторый код должен выполняться только в том 
случае, если выполнение 
try
прошло успешно; такой код размещается в блоке 
else

Блок 
except
сообщает Python, что делать, если при выполнении кода 
try
произо-
шло определенное исключение.


210
Глава 10 • Файлы и исключения
Заранее определяя вероятные источники ошибок, вы повышаете надежность своих 
программ, которые продолжают работать даже при вводе некорректных данных 
или при недоступности ресурсов. Ваш код оказывается защищенным от случайных 
ошибок пользователей и сознательных атак.
Обработка исключения FileNotFoundError
Одна из стандартных проблем при работе с файлами — отсутствие необходимых 
файлов. Тот файл, который вам нужен, может находиться в другом месте, в имени 
файла может быть допущена ошибка или файл может вообще не существовать. 
Все эти ситуации достаточно прямолинейно обрабатываются в блоках 
try
-
except
.
Попробуем прочитать данные из несуществующего файла. Следующая программа 
пытается прочитать содержимое файла с текстом «Алисы в Стране чудес», но я не 
сохранил файл 
alice .txt
в одном каталоге с файлом 
alice .py
:
alice.py
filename = 'alice.txt'
with open(filename, encoding='utf-8') as f:
contents = f.read()
В программе видны два изменения. Во-первых, объект файла представляется пере-
менной с именем 
f
— это общепринятое соглашение. Во-вторых, в программе ис-
пользуется аргумент 
encoding
. Он необходим в тех случаях, когда кодировка вашей 
системы по умолчанию не совпадает с кодировкой читаемого файла.
Прочитать данные из несуществующего файла нельзя, поэтому Python выдает 
исключение:
Traceback (most recent call last): 
File "alice.py", line 3, in  
with open(filename, encoding='utf-8') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'alice.txt' 
В последней строке трассировки упоминается 
FileNotFoundError
: это исключение 
выдается в том случае, если Python не может найти открываемый файл. В данном 
примере функция 
open()
порождает ошибку, и чтобы обработать ее, блок 
try
на-
чинается перед строкой с вызовом 
open()
:
filename = 'alice.txt'
try:
with open(filename, encoding='utf-8') as f:
contents = f.read()
except FileNotFoundError:
print(f"Sorry, the file {filename} does not exist.")
В этом примере код блока 
try
выдает исключение 
FileNotFoundError
, поэто-
му Python ищет блок 
except
для этой ошибки. Затем выполняется код этого 


Исключения
211
блока, в результате чего вместо трассировки выдается доступное сообщение об 
ошибке:
Sorry, the file alice.txt does not exist.
Если файл не существует, программе больше делать нечего, поэтому код обработки 
ошибок почти ничего не добавляет в эту программу. Доведем до ума этот пример и по-
смотрим, как обработка исключений помогает при работе с несколькими файлами.
Анализ текста
Программа может анализировать текстовые файлы, содержащие целые книги. 
Многие классические произведения, ставшие общественным достоянием, доступны 
в виде простых текстовых файлов. Тексты, использованные в этом разделе, взяты 
с сайта проекта «Гутенберг» (
http://gutenberg .org/
). На этом сайте хранится подборка 
литературных произведений, не защищенных авторским правом; это превосходный 
ресурс для разработчиков, которые собираются работать с литературными текстами 
в своих программных проектах.
Прочитаем текст «Алисы в Стране чудес» и попробуем подсчитать количество слов 
в тексте. Мы воспользуемся методом 
split()
, предназначенным для построения 
списка слов на основе строки. Вот как метод 
split()
работает со строкой, содер-
жащей только название книги:
>>> 


Достарыңызбен бөлісу:
1   ...   148   149   150   151   152   153   154   155   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет