Книга «Изучаем Python»



Pdf көрінісі
бет106/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   102   103   104   105   106   107   108   109   ...   238
Байланысты:
2 5343781172763690906

alice.py

filename = 'alice.txt'

with open(filename) as f_obj:

    contents = f_obj.read()

Прочитать данные из несуществующего файла нельзя, поэтому Python выдает 

исключение:

Traceback (most recent call last): 

  File "alice.py", line 3, in  

    with open(filename) as f_obj: 

FileNotFoundError: [Errno 2] No such file or directory: 'alice.txt' 

В последней строке трассировки упоминается 

FileNotFoundError

: это исключение 

выдается в том случае, если Python не может найти открываемый файл. В данном 

примере функция 

open()

 порождает ошибку, и, чтобы обработать ее, блок 



try

 на-


чинается перед строкой с вызовом 

open()


:

filename = 'alice.txt'

try:

with open(filename) as f_obj:



contents = f_obj.read()

except FileNotFoundError:

    msg = "Sorry, the file " + filename + " does not exist."

    print(msg)

В этом примере код блока 

try


 выдает исключение 

FileNotFoundError

, поэто-

му Python ищет блок 

except

 для этой ошибки. Затем выполняется код этого 



блока, в результате чего вместо трассировки выдается доступное сообщение 

об ошибке:

Sorry, the file alice.txt does not exist.

Если файл не существует, программе больше делать нечего, поэтому код обработ-

ки ошибок почти ничего не добавляет в эту программу. Доработаем этот пример 

и посмотрим, как обработка исключений помогает при работе с несколькими 

файлами.

Анализ текста

Программа может анализировать текстовые файлы, содержащие целые книги. 

Многие классические произведения, ставшие общественным достоянием, доступны 

в виде простых текстовых файлов. Тексты, использованные в этом разделе, взяты 

с сайта проекта «Гутенберг» (http://gutenberg.org/). На этом сайте хранится под-




200    Глава 10  •  Файлы и исключения

борка литературных произведений, не защищенных авторским правом; это превос-

ходный ресурс для разработчиков, которые собираются работать с литературными 

текстами в своих программных проектах.

Прочитаем текст «Алисы в Стране чудес» и попробуем подсчитать количество слов 

в тексте. Мы воспользуемся методом 

split()

, предназначенным для построения 

списка слов на основе строки. Вот как метод 

split()


 работает со строкой, содер-

жащей только название книги:

>>> title = "Alice in Wonderland"

>>> title.split()

['Alice', 'in', 'Wonderland']

Метод 


split()

 разделяет строку на части по всем позициям, в которых обнаружит 

пробел, и сохраняет все части строки в элементах списка. В результате создается 

список слов, входящих в строку (впрочем, вместе с некоторыми словами могут 

храниться знаки препинания). Для подсчета слов в книге мы воспользуемся вызо-

вом 


split()

 для всего текста, а затем подсчитаем элементы списка, чтобы получить 

примерное количество слов в тексте:

filename = 'alice.txt'

try:

with open(filename) as f_obj:



contents = f_obj.read()

except FileNotFoundError:

msg = "Sorry, the file " + filename + " does not exist."

print(msg)

else:

    # Подсчет приблизительного количества строк в файле.



    words = contents.split()

    num_words = len(words)



    print("The file " + filename + " has about " + str(num_words) +  

            " words.")

Затем я переместил файл 

alice .txt

 в правильный каталог, чтобы код в блоке 

try

 

был выполнен без ошибок. В точке  программа загружает текст в переменную 



contents

, которая теперь содержит весь текст в виде одной длинной строки и ис-

пользует метод 

split()


 для получения списка всех слов в книге. Запрашивая 

длину этого списка при помощи функции 

len()

, мы получаем неплохое при-



ближенное значение количества слов в исходной строке . В точке  выводится 

сообщение с количеством слов, найденных в файле. Этот код помещен в блок 

else

, потому что он должен выводиться только в случае успешного выполнения 



блока 

try


. Выходные данные программы сообщают, сколько слов содержит файл 

alice .txt

:

The file alice.txt has about 29461 words. 



Количество слов немного завышено, потому что в нем учитывается дополнительная 

информация, включенная в текстовый файл издателем, но в целом оно довольно 

точно оценивает длину «Алисы в Стране чудес».



Исключения    201

Работа с несколькими файлами

Добавим еще несколько файлов с книгами для анализа. Но для начала переместим 

основной код программы в функцию с именем 

count_words()

. Это упростит про-

ведение анализа для нескольких книг:



Достарыңызбен бөлісу:
1   ...   102   103   104   105   106   107   108   109   ...   238




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

    Басты бет