【千锋Python2205班9.01笔记-day09-Python操作Excel和Python发邮件】

01-homework

1.计算出《成都二手房.xlsx》文件中崇州、大邑、都江堰、高新里面房子单价大于10000元/平的二手房数量总数

from openpyxl import load_workbook

#加载本地文件(工作簿)
wb = load_workbook('./成都二手房.xlsx')
#查看所有的工作表
ws = wb.sheetnames
print(ws)

#计数变量
Count = 0
#指定工作表:工作簿[工作表名] --> wb[工作表名]
for name in ws:
    sheet = wb[name]
    # 求出最大行列数
    rows = sheet.max_row
    cols = sheet.max_column
    for i in range(1, cols + 1):
        # 判断第几列为“单价”列
        if sheet.cell(1, i).value == '单价':
            # 此时i的值为单价所在列数
            break
    # 寻找单价列单价超过10000元/平的二手房数量
    for row in range(2, rows + 1):
        cellValue = sheet.cell(row, i).value
        # print(cellValue, type(cellValue))
        if cellValue != None:
            newValue = cellValue.replace('元/平', '').replace(',', '').replace('参考价:', '')
            # print(newValue)
            if 10000 <= int(newValue):
                Count += 1
print(f'二手房单价超过10000元/平的数量为{Count}')

02-xlwt对xls文件的写操作

from xlwt import Workbook
from random import randint


'''注意:不要奢求xlwt能够对一个已经存在的文件进行写操作,
要打开已经存在的文件,先要做加载,加载操作等价于读操作,但是xlwt模块只能写,没有任何读数据能力。
所以说,xlwt只能从0到1进行文件的创建与写操作。
'''

#1.创建工作簿:Workbook()
wb = Workbook()

#2.创建工作表:add_sheet()
#注意:xlwt模块理解为你创建了某个表就是为这个表写内容
ws = wb.add_sheet('期末成绩')

#3.写入内容
title = ['姓名', '数学', '语文', '英语']
#write(行号,列号,内容) --> 行号和列号从0开始
for i in range(len(title)):
    ws.write(0, i, title[i])

names = ['关羽', '张飞', '赵云', '马超', '黄忠']
for nameIndex in range(len(names)):
    ws.write(nameIndex + 1, 0, names[nameIndex])
    for colIndex in range(1, 4):
        ws.write(nameIndex + 1, colIndex, randint(0, 100))
#保存工作簿
#确保工作簿中存在至少一个工作表,xlwt模块默认不会生成,需要自己创建
wb.save('一年级一班考试成绩.xls')

03-xlrd模块读取xls模块

from xlrd import open_workbook

#1.加载已存在工作簿:open_workbook()
wb = open_workbook('一年级一班考试成绩.xls')

#2.获取所有工作表的名字:sheet_names()
sheetList = wb.sheet_names()
print(sheetList)

#3.指定工作表
#方式一:通过工作表名指定:sheet_by_name
sheet1 = wb.sheet_by_name('期末成绩')
#方式二:通过下标指定:sheet_by_index
sheet2 = wb.sheet_by_index(0)
print(sheet1 == sheet2)
print(sheet1, sheet2)

#4.读数据:
#cell(行号,列号) --> 行列号下标是从0开始
#value:获取指定单元格的值
print(sheet1.cell(0, 0))  # text:'姓名'
print(sheet1.cell(0, 0).value)  # 姓名

#5.获取总的行列数:nrows、ncols
rows = sheet1.nrows
cols = sheet1.ncols
print(rows, cols)

#6.读取所有信息
for row in range(rows):
    for col in range(cols):
        print(sheet1.cell(row, col).value)
        # 注意:xls文件使用xlrd读取数据时整型会变为浮点型

注意:
一般在文件读操作后都需要关闭文件;写操作后需要保存关闭文件;因为在文件被操作时是出于占用状态。除非执行关闭操作或者程序结束,否则文件不会被关闭。一般关闭文件使用close方法,保存关闭使用save方法

04-Python发邮件

场景1:每次发邮件,收件人都是同一个人,每次重新选择很费时间或者很繁琐,可以使用Python发送邮件将收件人固定好。

Python发送邮件设计的知识点:
1.两个内置模块:smtplib、email
2.需要了解附件以什么样的形式添加到邮件中(open方法、二进制、字节)
3.什么是授权码
4.能够看懂邮件发送过程中的发送编码(发送成功、发送失败、垃圾邮件等编码编号)
5.什么是smtp协议

如何将python发送邮件实现最大化的简单、简介、便捷
需要会使用python进行文件读写

05-Python发邮件流程

发送一封邮件大致流程:登录、写邮件、发送。

1.登录:

用程序通过邮箱服务器地址连通邮箱服务器,然后借助SMTP协议通过用户名和授权码进行登录。

2.写邮件:

登陆成功以后构造邮件,邮件由发件人、收件人(收件人、抄送人、密送人)、邮件主题、邮件内容(正文、附件)等组成

3.发送:

借助一开始连通好的服务器和登录好的账号密码,在SMTP协议基础上,通过收件人的地址进行邮件的发送。

SMTP协议:
简单邮件传输协议。它是用于从源地址到目标地址的邮件传输规范,通过SMTP协议控制邮件中转的方式。SMTP协议属于TCP/IP协议簇,它可以帮助每台计算机在发送或中转信件的时候找到下一个地址。SMTP服务器就是遵循SMTP协议发送邮件的服务器。其中涉及到SMTP认证,此认证可以使垃圾邮件的发送者没有机会散播垃圾邮件,增加SMTP认证的目的就是为了使用户避免收到垃圾邮件的骚扰。

06-Python发送邮件代码编写

import smtplib

#1.发送人账号
sendAddress = '1766935706@qq.com'
#2.发送人授权码(邮箱中的授权码等同于密码)
password = 'ntjoswtxxnhybcaa'
#3.连通服务器
#465端口就是发送邮件的端口
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
print(server)
#4.登录
loginResult = server.login(sendAddress, password)
print(loginResult)
#(235, b'Authentication successful')
#235响应成功状态码

#常用邮箱服务器,发送邮箱的端口都是465
#新浪邮箱:smtp.sina.com
#搜狐邮箱:smtp.sohu.com
#126邮箱:smtp.126.com
#163邮箱:smtp.163.com
#qq邮箱:smtp.qq.com
####################################################
from email.mime.text import MIMEText

#MIMEText被用来构造邮件消息,但是MIMEText不能够添加附件。
#1.构造邮件的正文
#三引号是多行字符串
content = """
尊敬的客户你好:
    你乘坐的火车G1234次列车马上到站,请及时到达指定站台。
"""
#2.将正文添加到邮件消息中
#'plain':子内容的类型,一般邮件的正文类型就是plain,utf-8换句话说就是unicode编码
#msg变量等价于一个邮件消息
msg = MIMEText(content, 'plain', 'utf-8')
#3.构造邮件的发件人、收件人等信息
#发件人
msg['From'] = 'Mr.Fu<1766935706@qq.com>'
#msg['From'] = 'xxx<xxx@qq.com>'
#收件人
msg['To'] = '张三<1766935706@qq.com>;李四<1766935706@qq.com>'
#msg['To'] = 'xxx<xxx@qq.com>'
#有时候会有抄送人、密送人等
#抄送人
msg['Cc'] = 'xxx'
#邮件主题
msg['Subject'] = '铁路12306乘车提醒'
#print(msg.as_string())
####################################################
#发送邮件
#server.sendmail(发件人,收件人,发送的消息)
#发件人需要写登录账号的邮箱地址
#收件人使用列表存放,即列表中的一个元素就是一个收件人
#发送的消息:字符串类型的邮件,msg.as_string()
#将邮件作为字符串
To = ['1766935706@qq.com']
server.sendmail(sendAddress, To, msg.as_string())
print('发送成功')

07-open方法

1.计算机中所有的数据以什么形式存在?
二进制:01

2.字节和二进制的关系
字节=8位二进制数

3.open方法
open(文件,模式,编码方式)
参数一:文件就是本地的一个文件,可以使用open方法打开。
参数二:模式
按照文件打开方式分为:r(只读)、w(只写)、a(追加)
按照打开的类型分为:t(文本类型)、b(字节类型:字节类型就代表二进制数据)
模式就是从两种打开方式种各取一种,任意组合:rt、rb、tr、br、wt、wb、tw、bw等
参数三、编码方式,如果是字节类型打开的,可以不写编码方式;
如果是以文本类型打开的,将编码方式设置为utf-8

#以文本只读模式打开文件
file = open('静夜思.txt', 'rt', encoding='utf-8')
#将文件中内容读出
result = file.read()
print(result)
#关闭打开的文件
file.close()

#再次打开文件
#以字节只读模式打开文件
file1 = open('静夜思.txt', 'rb')
result1 = file1.read()
print(result1)
file1.close()

邮件发送过程中添加的附件需要以二进制的形式进行发送,即附件要先以二进制形式读取,然后进行邮件的构造,发送的收件方再转换回原来的样子。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据太大 网盘下载 01 1.01爬虫说明.mp4 02 1.02爬虫技术库及反爬说明.mp4 03 1.03百度搜索及文件下载.mp4 04 1.04百度翻译之urllib的POST请求.mp4 05 1.05复杂的GET请求多页数据.mp4 06 1.06urllib的build_opener及handlers.mp4 07 1.07上下文扩展和Dao设计.mp4 08 2.01回顾知识点.mp4 09 2.02requests各方法及参数讲解.mp4 10 2.03requests的请求实战及Response对象.mp4 11 2.04xpath解析的应用.mp4 12 2.05古诗文网的爬虫.mp4 13 2.06request的session及图片验证码处理.mp4 14 3.01回顾知识点.mp4 15 3.02封装ElasticSearch操作的SDK.mp4 16 3.03re正则解析站长之家数据.mp4 17 3.04设计多任务爬虫框架.mp4 18 3.05进程_线程实现多任务爬虫.mp4 19 3.06bs4爬虫meinv网.mp4 20 4.01回顾知识点.mp4 21 4.02Flask实现文件上传服务.mp4 22 4.03设计协程的爬虫框架.mp4 23 4.04协程实现的美女网爬虫.mp4 24 4.05解析zhaopin网的所有城市和初始使用selenium.mp4 25 4.06Selenium爬取zhaopin.mp4 26 4.07说明window_handlers.mp4 27 4.08Selenium爬取百聘网.mp4 28 5.01回顾知识点.mp4 29 5.02chrome-headleass应用.mp4 30 5.03docker启动splash服务.mp4 31 5.04扩展Docker搭建私有仓库.mp4 32 5.05扩展VM安装ubuntu-server.mp4 33 5.06扩展远程连接server及免密登录.mp4 34 5.07单元测试及测试套件.mp4 35 6.01回顾与总结上周知识点.mp4 36 6.02日志模块的应用.mp4 37 6.03安装scrapy的说明.mp4 38 6.04scrapy架构说明.mp4 39 6.05scrapy指令.mp4 40 6.06scrapy的Response及数据解析.mp4 41 7.01回顾知识点.mp4 42 7.02Item应用.mp4 43 7.03pipeline处理_1.mp4 44 7.04定量爬虫及中间件说明.mp4 45 7.05下载中间件的方法说明.mp4 46 7.06下载中间件的Cookies.mp4 47 7.07crawlspider规则爬虫.mp4 48 8.01回顾知识点.mp4 49 8.02强化规则爬虫.mp4 50 8.03图片管道的应用.mp4 51 8.04说明自定义图片管道.mp4 52 8.05scrapy中日志记录器.mp4 53 8.06扩展解释器的excepthook.mp4 54 8.07自定义Selenium下载中间件.mp4 55 9.01回顾知识点.mp4 56 9.02分布式爬虫.mp4 57 9.03爬虫项目完整调试.mp4 58 9.04Linux云服务器部署爬虫.mp4 59 9.05scrapyd部署爬虫.mp4 60 9.06docker部署爬虫项目.mp4 61 9.07crontab.mp4 62 10.01回顾知识点.mp4 63 10.02MongoDB的基本操作.mp4 64 10.03总结mongodb.mp4 65 10.04Mongo数据存储及Shell自动部署.mp4 课件+代码 .zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值