Python也可以在内存中读写数据,用到的模块是StringIO和BytesIO。
1.StringIO 要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可,getvalue()方法用于获得写入后的str。
from io import StringIO
f = StringIO()
f.write('hello')
f.write(' ')
f.write('world!')
print(f.getvalue())
运行结果:
hello world!
要读取StringIO,可以用一个str初始化StringIO,然后,像读文件一样读取:
from io import StringIO
f = StringIO('白日依山尽\n黄河入海流\n欲穷千里目\n更上一层楼\n')
while True:
s = f.readline()
if s == '':
break
print(s.strip())
运行结果:
白日依山尽
黄河入海流
欲穷千里目
更上一层楼
2.BytesIO
StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。
from io import BytesIO
f = BytesIO()
f.write('牛牛编程'.encode('utf-8'))
print(f.getvalue())
f = BytesIO(b'\xe7\x89\x9b\xe7\x89\x9b\xe7\xbc\x96\xe7\xa8\x8b');
str = f.read().decode() #字节数组转字符串
print(str)
运行结果:
b'\xe7\x89\x9b\xe7\x89\x9b\xe7\xbc\x96\xe7\xa8\x8b'
牛牛编程
小结: StringIO和BytesIO是在内存中操作str和bytes的方法,使得和读写文件具有一致的接口。