数据读写的两种方式分析 数据读写不仅限于文件,内存中也可以进行读写操作。这种操作方式有两种主流实现:一种是基于字符的读写(StringIO),另一种是基于字节的读写(BytesIO)。
StringIO的应用场景 StringIO 创建的对象可以用来在内存中读写字符串。写入操作类似于向文件中写入,只需调用write方法并传入字符串即可。读取操作通常采用readline或getvalue方法来获取完整的字符串内容。 常见的使用场景是处理文本数据,尤其是需要频繁读写或者不确定大小的文本文件。
from io import StringIO f_w = StringIO() f_w.write('hello') f_w.write(' ') f_w.write('world!') print(f_w.getvalue()) #输出: hello world! f_r = StringIO('Hello!\nHi!\nGoodbye!') while True: s = f_r.readline() if s == '': break print(s.strip()) BytesIO的应用场景 BytesIO 创建的对象用于内存读写操作,处理的是二进制数据。写入操作需要先将数据转换为字节类型(如使用encode方法),读取操作则直接返回字节数据。 常见的应用场景是处理二进制文件,如图片加载器或者压缩解压文件编码解码等。
from io import BytesIO f_w = BytesIO() f_w.write('中文'.encode('utf-8')) print(f_w.getvalue()) #输出: b'\x4b\x8c\xad\x6f\x87' f_r = BytesIO(b'\x4b\x8c\xad\x6f\x87') print(f_r.read())