Как создать исключение конкретной ошибки ftplib?
К примеру есть ошибка "ftplib.error_perm: 530 User cannot log in.". Как создать исключение по коду ошибки? Нужно чтобы программа выводила пользователю в чем конкретно ошибка, при этом выполнение не останавливалось.
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Похоже код 530 может использоваться для различных сообщений:
In [263]: ftp = ftplib.FTP('ftp.hornet.org')
In [264]: ftp.login('aaa', '[email protected]')
---------------------------------------------------------------------------
error_perm Traceback (most recent call last)
...
error_perm: 530 This FTP server is anonymous only.
поэтому можно проверять само сообщение об ошибке:
try:
ftp = ftplib.FTP('ftp.hornet.org')
ftp.login('aaa', '[email protected]')
except ftplib.error_perm as exc:
if str(exc) == "530 User cannot log in.":
print("Здесь обрабатываем ошибку ...")
else:
raise
рабочий пример:
In [265]: try:
...: ftp = ftplib.FTP('ftp.hornet.org')
...: ftp.login('aaa', '[email protected]')
...: except ftplib.error_perm as exc:
...: if str(exc) == "530 This FTP server is anonymous only.":
...: print("Здесь обрабатываем ошибку ...")
...: else:
...: raise
...:
Здесь обрабатываем ошибку ...
Автор решения: Roman
→ Ссылка
Сделал так.
try:
ftp = FTP('adress', 'user', 'password')
except error_perm as err: # представляем ошибку как переменную err
if str(err) == "530 User cannot log in.": # преобразуем ошибку в строковый тип
print("Invalid username or password")
else:
print(err)