约 1535 字
约 8 分钟
文件 I/O 是对硬盘(外存)的操作,很多情况下,需要在内存中存储并操作数据(例如网页上动态生成图片、压缩包),在 Python 中可以使用 StringIO
和 BytesIO
实现这一点。
变量本身就是对内存的操作,此处的
StringIO
和BytesIO
提供类似文件 I/O 的,便于使用的流式操作接口。
StringIO
顾名思义,是对字符串的 I/O 操作,和文件 I/O 一样,支持 read
,write
,tell
,seek
等方法;并可以通过 getvalue
方法获取完整的字符串。
import io
from io import StringIO
stream = StringIO("甲乙丙丁戊己庚辛壬癸") # 创建 StringIO 对象
print("初始偏移为", stream.tell()) # 查看初始偏移
print(stream.read(3)) # 读取 3 个字符
stream.seek(6, io.SEEK_SET) # 将偏移量设为,文件开头 + 6 字符
print(stream.read(3)) # 读取 3 个字符
stream.seek(0, io.SEEK_SET) # 将偏移量设为,文件开头
stream.write("ABC") # 在中间写入,会进行覆盖
print(stream.getvalue()) # 获取整个字符串
Loading...
BytesIO
顾名思义,是对字节数据的 I/O 操作,和文件 I/O 一样,支持 read
,write
,tell
,seek
等方法;并可以通过 getvalue
方法获取完整的 bytes
。
import io
from io import BytesIO
stream = BytesIO(b"ABCDEFGHIJKLMNOPQRSTUVWXYZ") # 创建 BytesIO 对象
print("初始偏移为", stream.tell()) # 查看初始偏移
print(stream.read(3)) # 读取 3 个字节
stream.seek(6, io.SEEK_SET) # 将偏移量设为,文件开头 + 6 字节
print(stream.read(3)) # 读取 3 个字节
stream.seek(0, io.SEEK_SET) # 将偏移量设为,文件开头
stream.write(b"XXX") # 在中间写入,会进行覆盖
print(stream.getvalue()) # 获取整个字符串
Loading...
创建于 2025/5/8 18:39:31
更新于 2025/5/8 18:39:31