33.Python编程:StringIO和BytesIO

前言

前面学习了Python中的文件读写,但很多时候,数据读写不一定是文件,也可以在内存中读写。今天就来学习一下如何在内存中读写数据。主要涉及两个类:StringIO和BytesIO。

StringIO

StringIO就是在内存中读写str。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:

from io import StringIO, BytesIO

f = StringIO()
f.write("hello")
f.write(" ")

f.write("world")

print("内存中的数据:{}".format(f.getvalue()))

运行结果:

内存中的数据:hello world

说明:getvalue()方法用于获得写入后的str。
也可以用一个str初始化StringIO,然后,像读文件一样读取:

f = StringIO("Hello world!".upper())
print("内存中的数据:{}".format(f.read()))

运行结果:

内存中的数据:HELLO WORLD!

BytesIO

StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes:

b = BytesIO()
b.write("高铁即将实行电子票机制".encode("utf-8"))
print(b.getvalue())

运行结果:

b'\xe9\xab\x98\xe9\x93\x81\xe5\x8d\xb3\xe5\xb0\x86\xe5\xae\x9e\xe8\xa1\x8c\xe7\x94\xb5\xe5\xad\x90\xe7\xa5\xa8\xe6\x9c\xba\xe5\x88\xb6'

请注意,写入的不是str,而是经过UTF-8编码的bytes。

和StringIO类似,可以用一个bytes初始化BytesIO,然后,像读文件一样读取:

b = BytesIO("中国高铁是中国的一张名片".encode("utf-8"))
print(b.read())

运行结果:

b'\xe4\xb8\xad\xe5\x9b\xbd\xe9\xab\x98\xe9\x93\x81\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe7\x9a\x84\xe4\xb8\x80\xe5\xbc\xa0\xe5\x90\x8d\xe7\x89\x87'

小结

本节内容简单,主要学习了如何在内存中读写数据,涉及两个类:StringIO和BytesIO。


更多了解,可关注微信公众号:人人懂编程


微信公众号:人人懂编程

你可能感兴趣的:(33.Python编程:StringIO和BytesIO)