Python爬虫【十】数据存储2-自动化办公

Python爬虫【十】数据存储2-自动化办公

1、合并文件

# 读取前五天的销售数据,汇总到一个文件中
import csv

filenames = ['2019-12-%02d-销售数据.csv' % (i+1) for i in range(5)]

with open('12月销售数据汇总.csv', 'w', newline='') as file:
    csv_writer = csv.writer(file)

    for filename in filenames:
        with open(filename, newline='') as file:
            csv_reader = csv.reader(file)
            # 如果当前文件名是第一个文件名时,直接写入;否则将其转换成列表并用分片去掉第一行数据,再进行写入
            if filename == filenames[0]:  # 第一个文件保留表头
                rows = csv_reader
            else:
                rows = list(csv_reader)[1:]  # 转换成列表
            csv_writer.writerows(rows)

可以使用 list() 函数转换成列表

%02d 中 2表示最小占位符宽度,前面的0表示用0填充宽度不足的部分,如1 >> 01, 2 >> 02。

2、统计数据

# 读取 12月销售数据汇总.csv 并计算出购买转化率(买家数/访客数)和客单价(交易额/买家数)存入新的表格当中
import csv

with open('12月销售计算数据汇总.csv', 'w', newline='') as file:
    csv_writer = csv.writer(file)

    with open('12月销售数据汇总.csv', newline='') as file:
        csv_reader = csv.reader(file)

        for index, row in enumerate(csv_reader):
            if index == 0:  # 第一个是表头
                csv_writer.writerow(row + ['购买转化率', '客单价'])  # 添加两个新表头
            else:
                visitors = int(row[2])  # 访客量
                buyers = int(row[3])  # 买家数
                gmv = int(row[4])  # 交易额
                sale_rate = buyers / visitors if visitors else 0  # 购买转化率,除数不为 0 时进行计算,否则结果为 0
                pct = gmv / buyers if buyers else 0  # 客单价
                csv_writer.writerow(row + [sale_rate, pct])  # 添加购买转化率和客单价

enumerate() 函数获取索引和每行数据内容,当索引是 0 时表示是第一行数据,即为表头,剩下的就是表格数据。

row的值是一个列表,通过索引就能获取到对应的值,获取的数据是字符串格式,需要用 int() 函数进行转换。

三元表达式:A / Y if X else Z;只有当X为真,Python才会执行表达式Y,而只有当X为假,才会执行表达式Z。

3、发送邮件

yagmail 是第三方模块,用来发邮件的;是 Yet Another GMAIL/SMTP client 的缩写,意思是“另一个 GMAIL / SMTP 客户端”。
安装:pip install yagmail

SMTP是Simple Mail Transfer Protocol 的缩进,即简单邮件传输协议。yagmail.SMTP() 用于和邮箱服务器建立连接,需要传入发件人邮箱、授权码和邮箱服务器地址。

调用 yag.send() 方法发送邮件,参数 to 是收件人邮箱,接收的是一个列表,可以传入多个收件人邮箱;参数 subject 是邮件的主题;最后的参数 contents 则是邮件内容,contents非常的智能,可以接收一个列表,传入一个文件,该文件会作为附件发送(这个文件 不存在,会作为文本直接显示)。

import yagmail

yag = yagmail.SMTP(user='...@qq.com', password='...', host='smtp.qq.com')
yag.send(to=['...@qq.com'], subject='Python 发送邮件', contents='人生苦短,我用 Python')
import yagmail

user = '...@qq.com'  # 发件人邮箱
password = '...'  # 授权码
host = 'smtp.qq.com'  # smtp服务器地址
to = ['...@qq.com']  # 收件人邮箱
subject = '...数据汇总'  # 邮件主题
contents = ['统计了 ... 数据,请查收~', '...数据汇总.csv']  # 邮件正文

yag = yagmail.SMTP(user=user, password=password, host=host)
yag.send(to=to, subject=subject, contents=contents)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假IT女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值