python的IO操作不像java等其他语言的IO操作那样很复杂,python的IO操作十分简单,只会用到一个全局函数:
open()
一.首先了解什么是IO操作:
IO —(input and output) 输入输出流,将内存中的瞬时数据持久化到ROM上,即到磁盘上。
一般一个完整的IO操作,伴随着 打开文件–>读取数据(读入内存)–> cpu进行运算–>数据持久化(输出)–>关闭资源
读取数据就是将数据从一个持久化设备中读取到内存中
输出数据就是将数据从内存中保存到磁盘上
二.调用open函数就会打开一个文件:
1.打开什么文件:
需要第一个参数:路径(可以是文件名)
2.第二个参数:
打开文件的模式,默认不写,为r:表示读取文件
(python默认读取的数据是文本文档,则读出来的是字符串)
如果mode=x,则表示改文件必须在不存在的情况下,第一次打开,那么就会创建文件,如果文件已存在,则会抛出异常
3.第三个参数:
默认为-1,可以指定读取的位置
在python中,可以通过命名参数直接指定需要的参数
三.分类
1.根据操作数据的类型,可以将流分为:
1>字符流(字符流,文本文档)
2>字节流(视频,图片)
2.根据流的方向可以将流分为
输入流 open mode="r"
输出流 open mode="w"
mode t表示open默认处理的文本文档
当我们想要处理字节数据时,就需要将t修改为b binary 二进制
四.字节流(字节没有编码)
图片:
视频:
要是读的视频太大,可以给read一个参数(1024)表示一次读取1024个字节
,防止读取过多,导致内存不够用,电脑蓝屏
因为会有文件名称重复,导致文件拷贝的时候,覆盖问题,则使用uuid,会生成一个永不重复的32位 16进制的字符串,将这个字符串拼接到文件名称上去
Import uuid
Uuid.uuid4().hex
五.with语句块
在IO操作的时候,发现IO一旦打开,必须关闭
但是关闭很容易被忘记,所以python提供了with语句块
在python中如果使用with打开IO流,则在with语句块结束时,自动调用IO流的close方法,避免忘记
六.对象序列化和反序列化:参数
模块:Import pickle
方法:dump:和io相关,直接存
Dumps:pickle.dumps(obj)
传一个参数,返回一个该对象所对应的字节对象(只管序列化,不管保存)
Load:和io相关,直接存
loads:pickle.loads(obj)
传一个参数,将序列化的字节数据反序列化为一个对象
Pickle.dumps(obj):将对象obj序列化为字节数据
例题:
Import json:一般用来序列化字典数据,最后序列化为json字符串