https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431918785710e86a1a120ce04925bae155012c7fc71e000 源自以上链接我进行了微调
1.StringIO()
实现了在内存中读写str类型数据
f.write()
from io import StringIO, BytesIO
# f 是一个句柄,相当于with open() as f中的f
f = StringIO()
f.write('i')
f.write(' ')
f.write('love')
f.write(' ')
f.write('programming')
print('f.read()',f.read())
print('f.getvalue()',f.getvalue()) # 获得句柄的内容
f.close()
结果
f.read()
f.getvalue() i love programming
由结果只,当创建StringIO为空时,f.read()读到的值也是空,而通过getvalue()获得的值为正确的值
f.read()
f1 = StringIO('i\nlove\nprogramming')
print('f1.getvalue()',f1.getvalue())
while True:
s = f1.readline()
print('f1.readline():',s)
if s == '':
break
# print(s)
f1.close()
结果
f1.getvalue() i
love
programming
f1.readline(): i
f1.readline(): love
f1.readline(): programming
f1.readline():
2.BytesIO()
实现了在内存中读写bytes类型数据
f.write()
f2 = BytesIO()
f2.write('i love programming'.encode('utf-8'))
print('f2.getvalue()',f2.getvalue())
print('f2.read()',f2.read())
f2.close()
结果
f2.getvalue() b'i love programming'
f2.read() b''
f.read()
f3 = BytesIO('i love programming'.encode('utf-8'))
content = f3.read()
content = content.decode('utf-8')
print('content',content)
print('f3.getvalue()',f3.getvalue())
f3.close()
结果
content i love programming
f3.getvalue() b'i love programming'
3 getvalue() 获取StringIO()和BytesIO的内容