2025年3月25日 星期二 甲辰(龙)年 月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python StringIO和BytesIO

时间:03-29来源:作者:点击数:53

StringIO

很多时候,数据读写不一定是文件,也可以在内存中读写。

StringIO顾名思义就是在内存中读写str。

要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:

  • >>> from io import StringIO
  • >>> f = StringIO()
  • >>> f.write('hello')
  • 5
  • >>> f.write(' ')
  • 1
  • >>> f.write('world!')
  • 6
  • >>> print(f.getvalue())
  • hello world!

getvalue()方法用于获得写入后的str。

要读取StringIO,可以用一个str初始化StringIO,然后,像读文件一样读取:

  • >>> from io import StringIO
  • >>> f = StringIO('Hello!\nHi!\nGoodbye!')
  • >>> while True:
  • ... s = f.readline()
  • ... if s == '':
  • ... break
  • ... print(s.strip())
  • ...
  • Hello!
  • Hi!
  • Goodbye!

BytesIO

StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。

BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes:

  • >>> from io import BytesIO
  • >>> f = BytesIO()
  • >>> f.write('中文'.encode('utf-8'))
  • 6
  • >>> print(f.getvalue())
  • b'\xe4\xb8\xad\xe6\x96\x87'

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

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

  • >>> from io import BytesIO
  • >>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
  • >>> f.read()
  • b'\xe4\xb8\xad\xe6\x96\x87'

小结

StringIO和BytesIO是在内存中操作str和bytes的方法,使得和读写文件具有一致的接口。

参考源码

do_stringio.py

do_bytesio.py

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门