Найти - Пользователи
Полная версия: итератор и генератор. Python3
Начало » Центр помощи » итератор и генератор. Python3
1
CareBellum
Приветствую
Потихоньку изучаю 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, что данный пример не работает
py.user.next
Надо использовать email.message_from_bytes() .

CareBellum
Интересует какие именно были сделаны изменения в итераторе/генераторе в Python3
Итератор и генератор тут ни при чём. В третьем питоне полностью изменены строки (наведён порядок).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB