Исключения
201
Работа
с несколькими файлами
Добавим еще несколько файлов с книгами для анализа. Но для начала переместим
основной код программы в функцию с именем
count_words()
. Это упростит про-
ведение анализа для нескольких книг:
word_count.py
def count_words(filename):
"""Подсчет приблизительного количества строк в файле."""
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.")
filename = 'alice.txt'
count_words(filename)
Б
у
льшая часть кода не изменилась. Мы просто снабдили код отступом и пере-
местили его в тело
count_words()
. Кроме того, комментарий был преобразован
в строку
документации
.
Теперь мы можем написать простой цикл для подсчета слов в любом тексте,
который нужно проанализировать. Для этого имена анализируемых файлов со-
храняются в списке, после чего для каждого файла в списке вызывается функ-
ция
count_words()
. Мы попробуем подсчитать слова в «Алисе в Стране чудес»,
«Сиддхартхе», «Моби Дике» и «Маленьких женщинах» — все эти книги есть
в свободном доступе. Я намеренно не стал копировать файл
siddhartha .txt
в каталог
с программой
word_count .py
, чтобы выяснить, насколько хорошо наша программа
справляется с отсутствием файла:
def count_words(filename):
...
filenames = ['alice.txt', 'siddhartha.txt', 'moby_dick.txt', 'little_women.txt']
for filename in filenames:
count_words(filename)
Отсутствие
файла
siddhartha .txt
не влияет на выполнение программы:
The file alice.txt has about 29461 words.
Sorry, the file siddhartha.txt does not exist.
The file moby_dick.txt has about 215136 words.
The file little_women.txt has about 189079 words.