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

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)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值