Как создать исключение конкретной ошибки 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)
→ Ссылка