数据流简介:
介绍:
数据的流动,称为流,硬盘和内存之间的数据交互
流按照方向分,分为输入流和输出流,以内存作参照物,将数据数据源读取到内存,为输入流,也称为读取流。将数据从内存中写入数据源,为输出流,也称为写入流。
流放在I/O包里
数据流分类
--- 分为字节流,字符流和对象流。
- 字节流:以字节方式传输,所有类型均能传输
- 字符流:只能传输字符串
- 对象流:传输对象(json)
计算机采用二进制。数据的传输都是以字节为单位传输。所以,无论那种流,其本质都是字节流。不过,为了方便字符数据和对象数据的传输,可以在字节流基础上进行封装,形成字符流和对象流,所有的流都使用int类型去接收;
InputStream和OutputStrem:
InputStream和OutputStrem是字节流的两个父类,这个两个类是抽象类,提供了read()和write()两个抽象方法;由子类根据自己数据源的特点分别做实现
流的操作步骤
-
建立流
-
操作流
-
关闭流
当做文件流操作时,读取流会抛出文件问找到FileNotFoundException异常。写入流会新建文件,但是前提是文件所在目录必须存在。否则也会抛出FileNotFoundException
创建读取流:
临时文件——>内存 ——>IO流字符流:
import io # 导入io模块 sio = io.StringIO() # 创建一个对象,进行保存读取 sio.write("hello") # 写入 print(sio.getvalue()) # 读取 hello sio.close() # close之后内容就没有了
字节流(str+list bytes+bytearray):
import io bio = io.BytesIO() bio.write(b"hello") # 写入 print(bio.getvalue()) # 读取 b'hello' bio.close() # close
sys模块(流操作) :
import sys # 标准输出流 sys.stdout.write('123 ') # 标准输入流 res = sys.stdin.readline() print(res) # 标准错误流 sys.stderr.write('opq ') 三种流 : 不同种流异步执行!!! 同种流有执行顺序(争夺cpu 资源)