Форум сайта python.su
Приветствую
Потихоньку изучаю Python, ковыряю код и обнаружил, что в 3 питоне не работает следующий пример из Python2:
def getMsgs(server_name=SMTP_SERVER,from_address='*'):
mail = imaplib.IMAP4_SSL(server_name)
mail.login(FROM_EMAIL, FROM_PWD)
mail.select('Inbox')
typ, data = mail.search(None, ‘(FROM “’ + from_address + ‘”)’)
for num in data.split():
typ, data = mail.fetch(num,'(RFC822)')
msg = email.message_from_string(data)
yield msg
for msgs in getMsgs(from_address='blabla@bla-bla.com'):
print (“1”)
TypeError: initial_value must be str or None, not bytes
При этом, если сделать
msg = email.message_from_string(data.decode('unicode-escape')), то проблем нет (понятно, что init_value в этом случае является строкой)
Интересует какие именно были сделаны изменения в итераторе/генераторе в Python3, что данный пример не работает
Отредактировано CareBellum (Дек. 7, 2017 22:44:01)
Офлайн
Надо использовать email.message_from_bytes() .
CareBellumИтератор и генератор тут ни при чём. В третьем питоне полностью изменены строки (наведён порядок).
Интересует какие именно были сделаны изменения в итераторе/генераторе в Python3
Отредактировано py.user.next (Дек. 8, 2017 01:33:54)
Офлайн