这个问题可能真的很愚蠢,但事实就是这样。以下语句触发特定电子邮件的异常:
File "/Users/me/tools/maildir-deduplicate/maildir_deduplicate/mail.py", line 104, in body_lines
_, _, body = self.message.as_string().partition("\n\n")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 621: ordinal not in range(128)
如果我在PDB下运行并在提示符处手动测试它,则不会抛出异常并且body
设置正确
> /Users/me/tools/maildir-deduplicate/maildir_deduplicate/mail.py(105)body_lines()
-> _, _, body = self.message.as_string().partition("\n\n")
(Pdb) _, _, body = self.message.as_string().partition("\n\n")
但如果我点击下一行,它仍然抛出异常:
(Pdb) n
UnicodeDecodeError: UnicodeD...ge(128)')
> /Users/me/tools/maildir-deduplicate/maildir_deduplicate/mail.py(105)body_lines()
-> _, _, body = self.message.as_string().partition("\n\n")
如果我中断语句,则在partition()
调用上抛出异常
File "/Users/me/tools/maildir-deduplicate/maildir_deduplicate/mail.py", line 106, in body_lines
body = self.message.as_string()
_, _, body = body.partition("\n\n")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 621: ordinal not in range(128)
同样的故事在pdb
下运行:如果我点击n
,将抛出异常,但如果我在提示符处输入_, _, body = body.partition("\n\n")
,则不会抛出异常
你知道这是什么原因吗
我怀疑您的代码中有
from __future__ import unicode_literals
:测试代码:
直接运行时(无pdb):
当在
pdb
中单步执行时,会得到UnicodeDecode错误:当手动执行该行时,它工作,因为
pdb
不在__future__
导入下,所以'\n\n'
是一个字节字符串:相关问题 更多 >
编程相关推荐