Невозможно прикрепить файл Excel, созданный из pandas dataframe, в электронное письмо от python - PullRequest
0 голосов
/ 20 апреля 2019

Я читаю файл с amazon S3, затем выполняю некоторые манипуляции с данными в пандах и затем отправляю автоматическое письмо.Имя файла всегда переименовывается одинаково.

Я пытаюсь преобразовать dataframe modelput в файл xls и прикрепить его в электронном письме

Как это исправить

Мой код

import os
import boto3
import pandas as pd
from sagemaker import get_execution_role
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from email import encoders
import base64


role = get_execution_role()
bucket='cotydata'
input_date='20190411'
data_key = 'modeloutput'+'.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)
output_key='UI_'+input_date
output_bucket='model-output-ui'
# Insert weather api key here 
api_key= 'key'
#read modeloutput and prepare dataframe
modeloutput = pd.read_csv(data_location)
modeloutput['Lane_Score'] = modeloutput['FLAG']=='Y'
modeloutput['Lane_Score']modeloutput.groupby(['ORG','DSTN']).Lane_Score.transform('mean')
df = modeloutput.to_excel("Outpout.xls")

# create message object instance
msg = MIMEMultipart()
password = "456621"
msg['From'] = "jmie@gmail.com"
msg['To'] = "rahul@gmail.com"
msg['Subject'] = "Dialy Report"
msg = MIMEMultipart('mixed')    

filename = df

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

# Define the attachment section
part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent)

server = smtplib.SMTP('smtp.gmail.com:587')

server.starttls()

# Login Credentials for sending the mail
server.login(msg['From'], password)

server.sendmail(msg['From'], msg['To'], msg)

Как я могу это исправить.

...