Python 库手册:io 输入输出模块

B站影视 韩国电影 2025-09-02 07:02 2

摘要:io 模块是 Python 标准库中处理输入输出流的核心模块。它提供了统一的类体系与接口,支持文本和二进制的读取与写入操作,同时封装了内存文件对象(如 StringIO、BytesIO),是构建高级数据流处理系统的基础。

io 模块是 Python 标准库中处理输入输出流的核心模块。它提供了统一的类体系与接口,支持文本和二进制的读取与写入操作,同时封装了内存文件对象(如 StringIO、BytesIO),是构建高级数据流处理系统的基础。

模块底层支撑了 Python 内置的 open 函数,其接口更为通用且面向对象,是现代 Python I/O 系统的核心。

常见应用场景:

(1)读取或写入磁盘文件(文本或二进制)。

(2)在内存中模拟文件对象,无需真实文件。

(3)对流式数据进行缓冲包装或编码转换。

(4)处理网络、管道等非常规 I/O 数据源。

(5)构造符合 Python 文件协议的自定义类。

(6)控制文本编码与错误处理策略。

◆ ◆ ◆

核心概念

1、io 是构建 Python 输入输出系统的基石,底层支撑 open 等操作。

2、模块区分了原始流(Raw)、缓冲流(Buffered) 和 文本流(Text),分别适用于不同场景。

3、通过 StringIO 与 BytesIO,可在内存中模拟文件读写,常用于测试、缓存、数据转换等。

4、支持自定义文件类的继承体系,使得流处理高度可扩展。

◆ ◆ ◆

应用举例

例 1: 打开并读取文本文件

import iowith open("example.txt", "r", encoding="utf-8") as f:print(f.read)

例 2:使用 StringIO 处理字符串

import osos.mkdir("my_folder")os.rmdir("my_folder") # 注意:只能删除空目录

例 3:使用 BytesIO 处理二进制数据

import iof = io.BytesIOf.write(b"\x00\x01\x02")f.seek(0)print(list(f.read))

例 4:以二进制方式读取文件

import iowith open("image.png", "rb") as f:data = f.read

例 5:包装二进制为文本流

import io# raw 是底层的字节流raw = io.BytesIO(b"hello\nworld")text = io.TextIOWrapper(raw, encoding="utf-8")print(text.read)

例 6:自定义写入时自动大写的文本流

import ioclass UppercaseWriter(io.TextIOBase):def __init__(self):self.data = ""def write(self, s):self.data += s.upperdef getvalue(self):return self.datawriter = UppercaseWriterwriter.write("hello world")print(writer.getvalue) # 输出:HELLO WORLD

◆ ◆ ◆

常用类方法速览

io.open(file, mode='r', buffering=-1, encoding=None, ...)

打开文件(等价于内置 open)。

参数:

file:路径字符串

mode:文件打开模式,如 "r"、"wb" 等

buffering:缓冲策略(0=无缓冲,1=行缓冲,默认=-1自动)

encoding:文本编码(仅文本模式下有效)

返回:文件对象(TextIOWrapper 或 BufferedReader 等)

io.StringIO(initial_value='', newline='\n')

创建内存中文本文件对象。适合处理字符串,行为类似文件。

参数:

initial_value:初始内容(可选)

newline:换行符

返回:StringIO 对象

io.BytesIO(initial_bytes=b'')

创建内存中二进制文件对象,适合处理图像、压缩包等二进制内容。

参数:initial_bytes 为初始数据(可选)

返回:BytesIO 对象

io.TextIOWrapper(buffer, encoding=None, errors=None, ...)

将二进制缓冲流包装为文本流,负责编码/解码处理。

参数:

buffer:底层缓冲流(如 BufferedReader)

encoding:编码(如 "utf-8")

errors:错误处理策略(如 "ignore"、"strict")

返回:TextIOWrapper 对象(文本文件接口)

io.BufferedReader(raw, buffer_size=...)

为原始二进制流添加缓冲读取功能。

参数:

raw:原始 RawIOBase 类型流(如 FileIO)

buffer_size:缓冲区大小

返回:BufferedReader 对象

io.BufferedWriter(raw, buffer_size=...)

为原始流添加缓冲写入功能。

返回:BufferedWriter 对象

io.BufferedRWPair(reader, writer, buffer_size=...)

组合读取器与写入器为一个可读写缓冲流。

适用于某些双工数据流,如 socket。

io.FileIO(name, mode='r')

表示操作系统底层的原始文件流。

通常不直接使用,而由 open 间接创建。

io.DEFAULT_BUFFER_SIZE

默认缓冲区大小(单位为字节,平台相关),供 BufferedReader 等使用。

io.TextIOBase / io.BufferedIOBase / io.RawIOBase / io.IOBase

这四个是 I/O 类体系中的抽象基类(ABC),可用于继承实现自定义流对象。

小结

io 模块是 Python 流操作的统一接口,既适合底层数据处理,也适合高级文本封装。理解其类结构,有助于写出更加健壮、可扩展的 I/O 程序。

“点赞有美意,赞赏是鼓励”

来源:小辰看科技

相关推荐