Python操作文件和邮件.7.21笔记

文件读写

概述

方法:open(文件名,模式(读写),编码方式,newline=‘’)

模式:

  1. 读写模式
    r(只读,文件不存在 – 报错)

    w(只写,文件不存在 – 自动创建;文件存在 – 内容清空)

    a(追加,文件不存在 – 自动创建;文件存在 – 追加内容)

  2. 文件内容类型模式

    t – 以字符串形式读写文件(默认,可写可不写)

    b – 以二进制形式读写文件(图片、音频、视频等)

模式怎么用

​ rt,rb,tr,br,wt,wb,at,ab,tw,ta,bw,ba等都可以

编码方式:
一般使用utf-8,并且文件写入编码和读取编码要保持一致

方法:newline = ‘’ – 表示换行形式
mac、windows、linux三种操作系统默认的换行符不一致,同一代码在不同操作系统展示的效果不同,所以用newline统一

一.txt文件读写

  1. 使用文本写模式以及utf-8编码创建一个对象
f1 = open('这里是文件名.txt','w',encoding='utf-8',newline='')
  1. 写入内容
f1.write('这里是内容\n')
  1. 保存关闭
f1.close()
# f1.write('aaaa')  #ValueError: I/O operation on closed file.
# 关闭之后不能再写内容,会报错

读模式不需要添加newline=‘’

  1. 打开一个txt文件
f2 = open('静夜思.txt','r',encoding='utf-8')
  1. 读取文件内容

    read:一次性全部读取

    readline:一次只读一行

    readlines:一次性全部读取出来是一个列表,

    ​ 每一行是一个元素,接着上一次读完的位置继续读

# print(f2.read())
print(f2.readline())
print(f2.readlines())
  1. 保存关闭和写一样

练习

例:将一本小说的所有换行和空格等空白符号去除

思路:结合字符串的操作方法

f1 = open('这里是小说名.txt','rt',encoding='utf-8')
result = f1.read()
f1.close()
print(result.replace('\n', '').replace(' ',''))

Tips:time模块的使用

import time
start = (time.time())
end = (time.time())
print('程序一共花费%.2f秒'% (end - start))

二.视频读写

读取

把视频音频等文件转码为二进制进行读取

:字节: b’xxxxx’ --> 字节是二进制形式的一种

f1 = open('这里是视频名.mp4','rb')
result = f1.read()
print(result)
f1.close()

将视频写入本地

f2 = open('这里是新视频名.mp4','wb')
f2.write(result)
f2.close()

发送邮件

概述

  1. 正常邮件发送流程

    登录邮箱(和邮箱服务器通信,登录账号密码)

    写邮件(收件人、抄送人、(密送人)、主题、正文、附件等)

    发送(发件人)

  2. python操作邮箱

    将固定部分内容写死,变动部分内容手动输入,使用命令发送邮件

    python内置了两个模块:

    smtplib – 负责通信

    email – 负责构建邮件信息(收件人、抄送人、发件人、主题、正文、附件等)

  3. 协议

    SMTP协议:simple mail transfer protocol – 简单邮件传输协议

    SSL协议:加密

  4. 465端口

    所有邮件必须经过465端口发送(保密级别很低)

    smtp.qq.com、smtp.163.com等

1.正文

导包
import smtplib
from email.mime.text import MIMEText
发件人
sendADDress = '这里写发件人邮箱'
密码(授权码)
password = '这里写发件人邮箱对应的第三方使用授权码'
连通服务器(以QQ邮箱为例)
server = smtplib.SMTP_SSL('smtp.qq.com',465)
登录
loginResult = server.login(sendADDress,password)
邮件正文
content = """
尊敬的xxx:

  xxxxxxx

  敬礼!
"""

语法:MIMEText(正文,类型,编码)

类型:
  1. 单独写:

    文字 – plain ; 图片 – image ; 音频 – audio ; 视频 – video ; html文件 – html

  2. 综合写:

    图片、音频、视频、压缩包、word文档等 – base64

msg = MIMEText(content,'plain','utf-8')
发件人、收件人、抄送人昵称;主题
msg['From'] = '发件人昵称'
msg['To'] = '收件人昵称'
msg['Cc'] = '抄送人昵称'
msg['Subject'] = '主题'
# as_string() --> 将邮件内容转成字符串(中文被编码过)
print(msg.as_string())
发送邮件

语法

sendmail(发件人账号(字符串),收件人账号(字符串列表),邮件内容(字符串类型)

server.sendmail(sendADDress,getEmail,msg.as_string())

2.添加附件

导包
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
在正文后添加附件

:图片音频视频都可以,格式记得写对

# 这是一个能够添加附件的邮件对象
msg = MIMEMultipart()

photo = MIMEText(open('图片.jpg','rb').read(),'base64','utf-8')

# 告诉邮箱如何处理相应结果,将附件在邮件中显示出来(filename后面不能有中文)
photo['Content-Disposition'] = 'attachment;filename="photo.jpg"'
msg.attach(photo)

:其余没写的部分和1.正文里面一样

3.python自动化

把一些变动的部分用input语句代替

如:

msg['From'] = input('输入邮件的发件人昵称:')
msg['To'] = input('输入邮件的收件人:')
msg['Cc'] = input('输入邮件的抄送人:')
msg['Subject'] = input('输入邮件的主题:')

# 还可以对输入的邮箱进行判断
getEmail = []
while True:
    email = input('请输入收件人邮箱账号(输入0结束):')
    if email != '0':
        getEmail.append(email)
    else:
        break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值