您的位置:首页 > 编程语言 > Python开发

python 自动化:调取接口获取每日数据并写入xls,添加附件并发送email

2018-01-25 16:30 609 查看
import requests
import xlrd
from xlutils.copy import copy
import smtplib
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import time
import datetime

def send_email(list)
msg = MIMEMultipart()       #创建容器
msg['to'] = "xxxx@qq.com,xxxx@qq.com" #发送给
msg['Cc'] = "xxxx@qq.com,xxxx@qq.com" #抄送
msg['from'] = 'xxxxxx@qq.com'          #发送者
msg['subject'] = '每日数据统计'         #标题
puretext = MIMEText(list[1])   #创建邮件主题
msg.attach(puretext)           #把主题添加到容器

xlsxpart = MIMEApplication(open(list[0], 'rb').read())
xlsxpart.add_header('Content-Disposition', 'attachment', filename='123.xls')
msg.attach(xlsxpart)

try:
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
server.login('xxxxxx', 'xxxxxxxxx')      #用户名,密码
server.sendmail(msg['from'], msg['to'].split(",") + msg['Cc'].split(","), msg.as_string())    #发送
server.quit()
print("邮件发送成功")
time.sleep(5)
except Exception as e:
print('完蛋了,%s' % e)

def write_excle():
data = requests.post("http://ip/").json()
book = xlrd.open_workbook("/home/python3/sjtj/0124.xls")
new_book = copy(book)
sheet = new_book.get_sheet(0)
name = str(datetime.date.today() - datetime.timedelta(days=1))
list = []
newName = "/home/python3/sjtj/ " + name + ".xls"
list.append(newName)
for value in data.values():
index = 0
for key in value:
sheet.write(2 + index, 0, key["createTime"])   # 统计时间
sheet.write(2 + index, 1, key["xzpv"])         # 当日新增PV
sheet.write(2 + index, 2, key["xzuv"])   # 当日新增UV
sheet.write(2 + index, 3, key["xzxz"])   # 当日新增下载用户
sheet.write(2 + index, 4, key["xztg0"])   # 热门小说
sheet.write(2 + index, 5, key["xztg1"])   # 金典美文
sheet.write(2 + index, 6, key["xztg"])   # 合计
sheet.write(2 + index, 7, key["xzvoteCount0"])   # 热门小说
sheet.write(2 + index, 8, key["xzvoteCount1"])   # 金典美文
sheet.write(2 + index, 9, key["xzvoteCount"])   # 合计
sheet.write(2 + index, 10, key["xzshareNum1"])  # 活动首页
sheet.write(2 + index, 11, key["xzshareNum2"])  # 个人首页
sheet.write(2 + index, 12, key["xzshareNum3"])  # 详情页
sheet.write(2 + index, 13, key["xzshareNum"])  # 合计
sheet.write(2 + index, 14, key["xzplayCount0"])  # 热门小说
sheet.write(2 + index, 15, key["xzplayCount1"])  # 金典美文
sheet.write(2 + index, 16, key["xzplayCount"])  # 合计
index += 1
key1 = value[-1]
key2 = value[-2]
conntion = "趣朗读每日数据情况:\n昨日新增PV:" + str(key2["xzpv"]) + ",UV" + str(key2["xzuv"]) + ",投稿数" + str(key2["xztg"]) + \
",投票数" + str(key2["xzvoteCount"]) + ",分享数" + str(key2["xzshareNum"]) + ",下载用户" + str(key2["xzxz"]) + \
"\n截止昨日,累计PV:" + str(key1["xzpv"]) + ",UV" + str(key1["xzuv"]) + ",投稿数" + str(key1["xztg"]) + \
",投票数" + str(key1["xzvoteCount"]) + ",分享数" + str(key1["xzshareNum"]) + ",下载用户" + str(key1["xzxz"])
list.append(str(conntion))
new_book.save(newName)

return list

//定时器
def timeRUN():
index = 0
ntime = datetime.datetime(2018, 2, 1, 8, 00)
while True:
now = str(datetime.datetime.now())
now = now.split(".")[0]
now = datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S')
if now == ntime:
list = write_excle()
print("文件读写成功,开始发送邮件")
send_email(list)
index = 1
else:
if index == 1:
ntime = ntime + datetime.timedelta(days=1)
index = 0
print("下次发送时间是:" + str(ntime))

while True:
try:
timeRUN()
except Exception as e:
print(e)
time.sleep(10)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: