python操作IO流
open函数:主要目的是打开一个本地文件(路径+文件名)
open函数的解析:
第一个参数 file 代表要打开或者创建文件的名称或者路径
第二个参数 表示打开的模式是mode打开模式,也就是说你要只读,还是只写,还是读写,第三个参数是编码格式。
open的简单实用:
f=open(path,“r”)
msg=f.read()
#最后关闭IO流
f.close()
IO流的分类
|–根据数据流动(站在内存的角度上来说)的方向:
|–输入流
|–输出流
|–根据数据的类型:
|–字节流
|–字符流
open参数说明:
参数 | 描述 |
name | 文件名 |
mode | 操作文件模式 |
buffering | 寄存状态,buffering设为0,访问‘不寄存,为1访问文件寄存如果大于1的整数表明寄存区的缓冲大小 |
文件操作模式
模式 | 描述 |
r | 只读模式打开文件,文件的指针在文件开头,即从第一行第一列读取文件内容 |
rb | 在二进制格式下以只读模式打开文件,文件指针放在开头,即ongoing第一行第一列读取文件内容 |
r+ | 读写模式打开文件,文件指针在开头 |
rb+ | 在二进制格式下以读写模式打开文件,文件指针在文件开头 |
w | 以写模式打开文件,文件指针在文件开头,即从文件头开始编辑,原有内容被删除,如果文件不存在,会自动创建文件 |
wb | 在二进制格式下以写模式打开文件,如果文件存在,从头开始编辑,原有内容被删除,文件不存在,自动创建文件 |
w+ | 读写模式打开文件,文件存在,从头开始编辑,原有内容被删除,文件不存在,自动创建文件 |
wb+ | 在二进制格式下以读写模式打开文件,从头开始编辑,原有内容被删除,文件不存在则自动创建文件 |
a | 打开文件追加内容,如果文件存在,文件指针放在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件 |
ab | 在二进制格式下追加文件内容,文件指针放在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件 |
a+ | 以读写模式追加文件内容,文件指针在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件 |
ab+ | 在二进制格式下追加文件内容,文件指针在文件结尾,即继续先前的文件继续编辑,文件不存在,自动创建文件 |
文件对象方法
方法 | 描述 |
read([size]) | size未指定则返回整个文件,如果文件大小>2倍内存则出现问题,read()读到文件末尾是返回空字符"" |
readline() | 按行读取数据,返回一行数据 |
readlines([size]) | 按行读取数据,返回size行的数据列表,size未指定则返回全部行 |
write(“string”) | 写入字符串数据,如果数据格式不是字符串,需要转为字符串格式 |
tell() | 返回一个整数,表示当前文件指针的位置,即到文件起始位置的比特数 |
seek(offset,[start]) | 移动文件指针,offset为偏移量,单位为bit,可正可负,start为起始位置,0表示文件开始,1当前位置,2文件末尾 |
例:
对象序列化
概念:将内存中的一个抽象概念、逻辑概念(对象)转换成字节或者字符数据的过程,就叫做对象序列化。
| – pickle
| – dump #将对象序列化成为字节数据,并且保存在file中
| – dumps #将对象序列化成为字节数据
| – load #将一个file对象反序列化为对象
| – loads #将一个字节数据反序列化为对象
| – json
可以将对象转换为字符数据
| – dump
| – dumps
| – load
| – loads
注意:json这个模块一般用来序列化字典对象,或者转化json数据,但是其他对象也是可以的。
with语句块
python 每当打开一个IO流,最后一定要关闭资源
with open("a.txt", "r") as f:
# 操作IO流,不用关闭
with语句块打开的IO流
with结束时自动调用close方法关闭资源