io 模块提供了 Python 用于处理各种 I/O 类型的主要工具。三种主要的 I/O类型分别为: 文本 I/O二进制 I/O 和 原始 I/O。这些是泛型类型,有很多种后端存储可以用在他们上面。一个隶属于任何这些类型的具体对象被称作 file object。 其他同类的术语还有  和 类文件对象

独立于其类别,每个具体流对象也将具有各种功能:它可以是只读,只写或读写。它还可以允许任意随机访问(向前或向后寻找任何位置),或仅允许顺序访问(例如在套接字或管道的情况下)。

所有流对提供给它们的数据类型都很敏感。例如将 str 对象给二进制流的 write() 方法会引发 TypeError。将 bytes 对象提供给文本流的 write() 方法也是如此。

文本 I/O

文本I/O预期并生成 str 对象。这意味着,无论何时后台存储是由字节组成的(例如在文件的情况下),数据的编码和解码都是透明的,并且可以选择转换特定于平台的换行符。

创建文本流的最简单方法是使用 open(),可以选择指定编码:

f = open("myfile.txt", "r", encoding="utf-8")

内存中文本流也可以作为 StringIO 对象使用:

f = io.StringIO("some initial text data")

创建二进制流的最简单方法是使用 open(),并在模式字符串中指定 'b' :

f = open("myfile.jpg", "rb")

内存中二进制流也可以作为 BytesIO 对象使用:

f = io.BytesIO(b"some initial binary data: \x00\x01")