У меня есть скрипт для разбора файлов почтовых ящиков, и он отлично работает с python 2.7. Заголовок закодирован как iso-8859-1, и поэтому я могу легко его расшифровать, как показано ниже:
import mailbox
logfile = '/var/mail/mailuser'
mbox = mailbox.mbox(logfile)
for msg in mbox:
sender = unicode(msg ["From"].replace("'", '').replace('"', '') , 'ISO-8859-1')
Теперь я хотел бы запустить его с python3, так как в python3 все по умолчанию unicode, я надеваюНе нужно конвертировать текст в Unicode, и я предполагаю, что библиотека должна быть в состоянии обрабатывать кодировки. моя версия кода на python3 выглядит следующим образом:
import mailbox
logfile = '/var/mail/mailuser'
mbox = mailbox.mbox(logfile)
for msg in mbox:
sender =msg ["From"].replace("'", '').replace('"', '')
, но выдает ошибку:
File "read_smtp_3.py", line 147, in read_log_files
for msg in mbox:
File "/usr/local/lib/python3.5/mailbox.py", line 108, in itervalues
value = self[key]
File "/usr/local/lib/python3.5/mailbox.py", line 72, in __getitem__
return self.get_message(key)
File "/usr/local/lib/python3.5/mailbox.py", line 779, in get_message
msg.set_from(from_line[5:].decode('ascii'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 4: ordinal not in range(128)
Поскольку библиотека не может декодировать текст, я не уверен, как я могусправиться?