文章目录
- 前言
- 学习python自动化办公目的
- 未来持续打卡内容
- 本节思维导图
- 一、文件与文件的处理
- 基础知识
- 文件读写
- 文件的其他操作
- 二、python自动发送邮件
- 方法
- 自动发送邮件代码
- 实际操作中可能会遇到问题
- 打卡课程
前言
学习python自动化办公目的
- 学会使用python自动化处理文件,减少重复劳动
- 科学管理文件
- 能够不再使用别的软件合并、分割PDF等
未来持续打卡内容
- Task02 Python与excel
- Task03 Python与word和PDF
- Task04 简单的Python爬虫
- Task05 Python操作钉钉自动化
- Task06 其它推荐软件和网页
本节思维导图
本文不详细介绍函数,简单介绍方法,函数可自行百度,也可看课程GitHub链接。
一、文件与文件的处理
基础知识
- 知道什么是路径、相对路径、绝对路径的概念
- 使用python中
os.path
模块Python os 模块详解可进行路径的处理包括获取当前路径、改变当前路径、路径有效性检查等。
文件读写
- 使用python自带的
open() read()
可实现对文件的读写 - 读写文件3个步骤:
- 调用open()函数,返回一个File对象。
- 调用File对象的 read() 或 write() 方法。
- 调用File对象的 close() 方法,关闭该文件。
文件的其他操作
shutil
模块 可以复制、移动、改名和删除文件;send2trash
模块(第三方)可以将文件或文件夹发送到计算机的垃圾箱或回收站,而不是永久删除zipfile
模块中的函数,可以创建和打开(或解压)zip文件;glob
是Python自带的一个文件操作相关模块,用它可以查找符合条件的文件。fnmatch
是Python自带的库,是专门用来进行文件名匹配的模块,使用它可以完成更为复杂的文件名匹配;hashlib
模块,Python自带的hashlib库,可以获取文件MD5值,通过MD5来确定两个文件是不是一样的(用于判断重复文件名是否是同样的文件);
二、python自动发送邮件
方法
邮件发送需要遵守SMTP协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。python内置库:smtplib和email,能够实现邮件功能:
smtplib
库负责发送邮件email
库负责构造邮件格式和内容。
自动发送邮件代码
import smtplib #导入库
from smtplib import SMTP_SSL #加密邮件内容,防止中途被截获
from email.mime.text import MIMEText #构造邮件的正文
from email.mime.image import MIMEImage #构造邮件的图片
from email.mime.multipart import MIMEMultipart #把邮件的各个部分装在一起,邮件的主体
from email.header import Header #邮件的文件头,标题,收件人
#2 设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱
host_server = 'smtp.163.com' #sina 邮箱smtp服务器 #smtp 服务器的地址
sender_163 = 'pythonauto_emai@163.com' #sender_163为发件人的邮箱
pwd = 'DYEPOGLZDZYLOMRI' #pwd为邮箱的授权码'DYEPOGLZDZYLOMRI'
#也可以自己注册个邮箱,邮箱授权码'DYEPOGLZDZYLOMRI' 获取方式可参考#http://help.163.com/14/0923/22/A6S1FMJD00754KNP.html
# 设置接受邮箱,换成自己的邮箱即可
receiver
#3 构建MIMEMultipart对象代表邮件本身,可以往里面添加文本、图片、附件等
msg = MIMEMultipart() #邮件主体
#4 设置邮件头部内容
mail_title = 'python办公自动化邮件' # 邮件标题
msg["Subject"] = Header(mail_title,'utf-8') #装入主体
msg["From"] = sender_163 #寄件人
msg["To"] = Header("测试邮箱",'utf-8') #标题
#5 添加正文文本
mail_content = "您好,这是使用python登录163邮箱发送邮件的测试" #邮件的正文内容
message_text = MIMEText(mail_content,'plain','utf-8') #构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
msg.attach(message_text) # 向MIMEMultipart对象中添加文本对象
#6 添加图片
image_data = open('D:\\animals\\cats\\zophie.jpg','rb') # 二进制读取图片
message_image = MIMEImage(image_data.read()) # 设置读取获取的二进制数据
image_data.close() # 关闭刚才打开的文件
msg.attach(message_image) # 添加图片文件到邮件信息当中去
# 7 添加附件(excel表格)
atta = MIMEText(open('D:\\animals\\cats\\cat.xlsx', 'rb').read(), 'base64', 'utf-8') # 构造附件
atta["Content-Disposition"] = 'attachment; filename="cat.xlsx"' # 设置附件信息
msg.attach(atta) ## 添加附件到邮件信息当中去
#8 发送邮件
smtp = SMTP_SSL(host_server) #SSL登录 创建SMTP对象
smtp.login(sender_163,pwd) ## 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
smtp.sendmail(sender_163,receiver,msg.as_string()) # 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
print("邮件发送成功")
smtp.quit # 关闭SMTP对象
实际操作中可能会遇到问题
一个靠谱的解决方案:Python3报错 smtplib.SMTPHeloError: (500, b’Error)咋办 ?
打卡课程
https://github.com/datawhalechina/office-automation