欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python3: 内存中的 IO 流缓冲区 - StringIO 和 BytesIO

程序员文章站 2024-01-04 20:37:16
...

本文链接: https://xiets.blog.csdn.net/article/details/117575283

Python3 学习笔记(目录)

通过 open() 方法可以打开一个基于文件的读写 文本/二进制 IO 流。io 模块也提供了在内存中缓冲读写 文本/二进制 IO 流的 StringIOBytesIO

文本/二进制 IO 流的相关类层次和读写方法:IO 类的层次结构 和 读写方法

1. io.StringIO

io.StringIO 是基于文本字符读写的 IO 流,与 open() 打开的文件字符流有着相同的操作方法。

写入字符串:

>>> import io
>>> 
>>> f = io.StringIO()       # 创建一个在内存中的字符 IO 流缓冲区
>>> 
>>> f.write("Hello")        # 写入字符串
5
>>> f.write(" ")
1
>>> f.write("World")
5
>>> f.getvalue()            # 获取缓存区中的所有字符, 返回字符串
'Hello World'
>>> 
>>> f.close()               # 关闭流

读取字符串:

>>> import io
>>> 
>>> f = io.StringIO("abc\ndef\n123")    # 创建一个在内存中的字符 IO 流缓冲区
>>> 
>>> f.readline()                        # 读取一行
'abc\n'
>>> f.read()                            # 读写剩下所有字符
'def\n123'
>>>
>>> f.close()                           # 关闭流

配合 seek() 方法可以同时读取和写入。

2. io.BytesIO

io.BytesIO 是基于二进制读写的 IO 流,与 open() 打开的文件二进制流有着相同的操作方法。

写入 bytes:

>>> import io
>>> 
>>> f = io.BytesIO()        # 创建一个在内存中的二进制 IO 流缓冲区
>>> f.write(b"Hello")       # 写入 bytes
5
>>> f.write(b" ")
1
>>> f.write(b"World")
5
>>> f.getvalue()            # 获取缓存区中的所有 bytes, 返回 bytes
b'Hello World'
>>>
>>> f.close()               # 关闭流

读取 bytes:

>>> import io
>>> 
>>> f = io.BytesIO(b"abc\ndef\n123")    # 创建一个在内存中的二进制 IO 流缓冲区
>>> f.readline()                        # 读取一行内容
b'abc\n'
>>> f.read()                            # 读写剩下所有内容
b'def\n123'
>>> 
>>> f.close()                           # 关闭流

配合 seek() 方法可以同时读取和写入。

上一篇:

下一篇: