python io模块的BytesIO,StringIO

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的内容


猜你喜欢

转载自blog.csdn.net/ruguowoshiyu/article/details/80223475