Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 7, 2017 22:29:09

CareBellum
Зарегистрирован: 2017-12-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

итератор и генератор. Python3

Приветствую
Потихоньку изучаю 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)

Офлайн

#2 Дек. 8, 2017 01:33:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

итератор и генератор. Python3

Надо использовать email.message_from_bytes() .

CareBellum
Интересует какие именно были сделаны изменения в итераторе/генераторе в Python3
Итератор и генератор тут ни при чём. В третьем питоне полностью изменены строки (наведён порядок).



Отредактировано py.user.next (Дек. 8, 2017 01:33:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version