Форум сайта python.su
0
В коде создал две ошибки:
1. по указанному адресу нет файла
2. неправильное имя аргумента функции
В функции прописал единообразные улавливатели ошибки, но except FileNotFoundError работает, а except NameError нет. Не могу понять почему. Объясните, люди добрые и не очень.
Собственно код:
dogslist = '10-8/dogs.txt' catslist = '10-8/cat.txt' def prinfile(filename): try: with open(filename) as f_obj: lines = f_obj.readlines() for line in lines: print(line.strip().title()) print() except FileNotFoundError: print(f'Ouups, file "{filename}" not found') except NameError: print(f'We dont know what is the {filename}. Chek file name.') prinfile(dogslist) prinfile(catslist) prinfile(dsfdsf)
Users/1/Desktop/Мат часть/phyton/Практика/10-8.py”, line 20, in <module>Отредактировано megaeda (Апрель 20, 2022 15:00:43)
Офлайн
857
А зачем её обрабатывать? Если код синтаксически неверный, то с какого перепугу он должен таким оставаться? Ошибка либо должна быть исправлена, либо программа должна падать, а не просто отрабатывать и сообщение выводить какое-то, якобы всё нормально.
У тебя не имя файла неправильное, а имя переменной неправильное. Это считается синтаксической ошибкой кода, а не логической ошибкой алгоритма.
Офлайн
0
py.user.nextЯ пока на стадии изучения языка и столкнулся с непониманием хода работы программы, посему и спросил.
А зачем её обрабатывать?
py.user.nextДа я понял, что это разные виды ошибок и поэтому и написал два разных условия в except .
У тебя не имя файла неправильное, а имя переменной неправильное
with open(catslist) as f_obj:
with open(dsfdsf) as f_obj:
Отредактировано megaeda (Апрель 20, 2022 15:33:22)
Офлайн
857
megaedaНикуда ты не дошёл.
вызвали функцию третий раз (dsfdsf), дошли доwith open(catslist) as f_obj:
megaedaПрямо в этом месте оно у тебя справшивает “что это за мура ”dsfdsf“? я не знаю, поэтому обратиться к этому не могу и в функцию ничего передать не могу”.prinfile(dsfdsf)
Офлайн
0
py.user.nextПонял. Реверансы, гранд батманы и земные поклоны Вам, мил человек!
Прямо в этом месте
Офлайн