【发布时间】:2019-12-23 21:23:17
【问题描述】:
我在使用 imapclient-library 处理异常时遇到问题。
我尝试这样处理 LoginError:
source = IMAPClient(host=args.source_server, port=args.source_port, ssl=not args.source_no_ssl)
try:
print('Login source...'.format(args.source_user), end='', flush=False)
source.login(args.source_user, args.source_pass)
print('OK')
except exceptions.LoginError as e:
print('ERROR: {}'.format(e))
exit()
如果出现异常,我有这个:
Login source...ERROR: b'Invalid login'
我认为问题在于,format 正在调用 Exception-object 的 __str__()-method,并且不要尝试解码。
所以主要问题是我可以转换这个字符串
"b'Invalid login'"
像这样的普通字节对象?
b'Invalid login'
编辑 1
@lenik
如果我像这样使用e.message.decode():
try:
print('Login source...'.format(args.source_user), end='', flush=False)
source.login(args.source_user, args.source_pass)
print('OK')
except exceptions.LoginError as e:
print('ERROR: {}'.format(e.message.decode()))
exit()
我有一个 AttributeError:
AttributeError: 'LoginError' object has no attribute 'message'
编辑 2
@snakecharmerb
try:
print('Login source...'.format(args.source_user), end='', flush=False)
source.login(args.source_user, args.source_pass)
print('OK')
except exceptions.LoginError as e:
print('ERROR: {}'.format(e.args[0].decode()))
exit()
AttributeError: 'str' object has no attribute 'decode'
【问题讨论】:
标签: python python-3.x string byte imapclient