Как вы упомянули, установка average_method дает разумные значения.
normalized_mutual_info_score([0]*100001, [0]*100000 + [1],average_method='arithmetic')
#3.166757680223739e-14
Я бы предложил использовать arithmetic
, так как это будет значение по умолчанию в следующей версии 0.22, ссылка .
Существует приложение под названием jutda-helpdesk , которое использует Python poplib
и imaplib
для обработки входящих электронных писем. Вам просто нужно иметь учетную запись где-нибудь с доступом по протоколу POP3 или IMAP.
Это адаптировано из их get_email.py :
def process_mail(mb):
print "Processing: %s" % q
if mb.email_box_type == 'pop3':
if mb.email_box_ssl:
if not mb.email_box_port: mb.email_box_port = 995
server = poplib.POP3_SSL(mb.email_box_host, int(mb.email_box_port))
else:
if not mb.email_box_port: mb.email_box_port = 110
server = poplib.POP3(mb.email_box_host, int(mb.email_box_port))
server.getwelcome()
server.user(mb.email_box_user)
server.pass_(mb.email_box_pass)
messagesInfo = server.list()[1]
for msg in messagesInfo:
msgNum = msg.split(" ")[0]
msgSize = msg.split(" ")[1]
full_message = "\n".join(server.retr(msgNum)[1])
# Do something with the message
server.dele(msgNum)
server.quit()
elif mb.email_box_type == 'imap':
if mb.email_box_ssl:
if not mb.email_box_port: mb.email_box_port = 993
server = imaplib.IMAP4_SSL(mb.email_box_host, int(mb.email_box_port))
else:
if not mb.email_box_port: mb.email_box_port = 143
server = imaplib.IMAP4(mb.email_box_host, int(mb.email_box_port))
server.login(mb.email_box_user, mb.email_box_pass)
server.select(mb.email_box_imap_folder)
status, data = server.search(None, 'ALL')
for num in data[0].split():
status, data = server.fetch(num, '(RFC822)')
full_message = data[0][1]
# Do something with the message
server.store(num, '+FLAGS', '\\Deleted')
server.expunge()
server.close()
server.logout()
mb
- это просто некоторый объект для хранения всей информации почтового сервера, остальное должно быть довольно ясно.
Возможно, вам понадобится проверить документы на poplib
и imaplib
, чтобы получить конкретные части сообщения, но, надеюсь, этого достаточно, чтобы вы начали.
Django действительно задуман как веб-сервер (ну, как фреймворк, который вписывается в веб-сервер), а не как почтовый сервер. Я полагаю, вы могли бы поместить некоторый код в веб-приложение Django, которое запускает почтовый сервер, используя код, показанный в том вопросе, на который вы ссылались, но я действительно не рекомендовал бы его; это злоупотребление возможностями динамического веб-программирования.
Обычная практика - иметь отдельные почтовые и веб-серверы, и для этого вы захотите рассмотреть что-то вроде Sendmail или (еще лучше) Postfix. Я думаю, что для POP3 вам понадобится что-то вроде Dovecot или Courier. (Разумеется, почтовый сервер может уведомлять ваше веб-приложение о получении электронных писем, чтобы оно могло действовать на них, если вы этого хотите.)
РЕДАКТИРОВАТЬ : в ответ на ваши комментарии: да, вы пытаетесь создать (или хотя бы использовать) почтовый сервер. Сервер электронной почты - это просто программа, которая получает электронные письма (и может быть в состоянии отправлять их также, но вам это не нужно).
Вы определенно можете написать небольшой почтовый сервер на Python, который просто получает эти электронные письма и сохраняет их. изображения в файловую систему или базу данных или что-то еще. (Возможно, стоит задать новый вопрос, о) Но не включайте его в свое веб-приложение Django; сохранить его как отдельную программу.
Вы точно могли бы написать небольшой почтовый сервер на Python, который просто получает эти электронные письма и сохраняет изображения в файловую систему, базу данных или что-то еще. (Возможно, стоит задать новый вопрос, о) Но не включайте его в свое веб-приложение Django; сохранить его как отдельную программу.
Вы точно могли бы написать небольшой почтовый сервер на Python, который просто получает эти электронные письма и сохраняет изображения в файловую систему, базу данных или что-то еще. (Возможно, стоит задать новый вопрос, о) Но не включайте его в свое веб-приложение Django; сохранить его как отдельную программу.