Проблема с задачкой из учебника Эрика Мэтиза "Изучаем Python"

Рейтинг: -1Ответов: 1Опубликовано: 04.06.2023

Всем добрый день! Решаю задачки из учебника Эрика Мэтиза "Изучаем Python". Столкнулся с проблемой в задаче 10.8: Кошки и собаки: создайте два файла с именами cats .txt и dogs .txt. Сохраните по крайней мере три клички кошек в первом файле и три клички собак во втором. Напишите программу, которая пытается прочитать эти файлы и выводит их содержимое на экран. Заключите свой код в блок try-except для перехвата исключения FileNotFoundError и вывода понятного сообщения об отсутствии файла. Переместите один из файлов в другое место файловой системы; убедитесь в том, что код блока except выполняется как положено.

Написал программу:

filename1 = 'cats.txt'
filename2 = 'dogs.txt'
    
try:
    with open(filename1, 'r') as f1_object:
        f1 = f1_object.read()
    with open(filename2, 'r') as f2_object:
        f2 = f2_object.read()
except FileNotFoundError:
    print(f"Файл(ы) отсутствует!")
else:
    print(f1)
    print(f2)

Проблема заключается в том, что один файл отсутствует в каталоге с программой, а второй в нем есть, при этом Python отказывается его читать и выдает, что они оба отсутствуют. Точно также он читает файлы, если они оба есть в каталоге с программой. Что можно с этим сделать?

Заранее спасибо!

Ответы

▲ 2

выдает, что они оба отсутствуют

Это не так.
Блок else отработает только в том случае, если весь код внутри try отработает без ошибок.
Т.е. если одного файла не будет -> возникает ошибка в блоке try -> идем в блок except.


А для выполнения задачи достаточно printы поставить после чтения файла, а не в блок else.