1、IO流
IO流(input output stream):主要指的是计算机输入和输出的操作,一般来说是内存与磁盘之间的输入输出(狭义)
IO流操作是一种持久化操作,是将数据持久化在磁盘上
python如何操作IO流 ------ 通过open全局函数(主要作用是打开本地的文件)
open函数解析:
第一个参数:file(打开的文件的文件名或者路径)
第二个参数:mode 打开的模式(默认的是字符输入流)
其他参数:‘r’ open for reading(default)
‘w’ open for writing,truncating the file first
‘x’ create a new file and open it for writing
‘a’ open for writing,appending to the end of the file if it exits
‘b’ binary mode
‘t’ text mode(default)
IO流的分类:
1.根据数据的流动(站在内存的角度来说)的方向:1)输入流;2)输出流
注:把数据保存在硬盘里是输出流
2.根据数据的类型:1)字节流(储存图片、视频等);2)字符流
1.1IO操作字符数据
>>> f = open("aa.txt",mode="w")
>>> f
<_io.TextIOWrapper name='aa.txt' mode='w' encoding='cp936'>
>>> f.write("嘿嘿嘿嘿")
#返回的是写入字符的个数
4
>>> f.close()
>>> f = open("aa.txt",mode="w")
>>> f.write("哈哈哈哈 哈哈哈哈 哈哈哈哈")
15
>>> f.flush() #在不关流的情况下 写入需要写入的东西
不覆盖的方式
>>> f = open("aa.txt",mode="a")
>>> f.write("hhhhhhhhh")
9
>>> f.close()
注:本质Mode=“r" “w”------“rt” “wt”------t(text字符流)
>>> f = open("a.txt",mode="wt",encoding="utf-8")
>>> f.write("你好你好")
4
>>> f.close()
>>> f = open("a.txt",mode="rt")
>>> f.read(2) '浣犲'
>>> f.read(2) 'ソ浣'
>>> f.close()
>>> f = open("a.txt",mode="rt")
>>> f.read(2)
'你好'
while True:
masg = f.read(2)
if msg = "":
break
else:
#继续读
注意编码格式,如果编码格式不一致,会报错或者乱码
1.2IO操作字节数据
b------ binary mode
mode=“b”------操作字节数据(图片、音频、视频等)
>>> f = open("图片1.png","rb")
>>> f.read()
>>> f = open("图片1.png","rb")
>>> ff = open("图片.png","wb")
>>> ff.write(f.read)
>>> ff.write(f.read())
>>> f.close()
>>> ff.close()
注意:
字节流操作大数据的时候,不建议一次性读取
字节可以操作任何数据,字符只能操作字符数据
>>> f = open("a.txt","rt")
>>> f.read()
'你好你好'
>>> f = open("a.txt","rb")
>>> f.read()
b'\xc4\xe3\xba\xc3\xc4\xe3\xba\xc3'