Python之StringIO和BytesIO

StringIO

  • io模块中的类  from io import StringIO
  • 内存中,开辟一个文本模式的buffer,能够像文件对象同样操做它
  • 当close方法被调用的时候,这个buffer会被释放
 
StringIO操做
getvalue() 获取所有内容。根文件指针没有关系
>>> from io import StringIO
>>> # 内存中构建
>>> sio = StringIO()  # 像文件对象同样操做
>>> print(sio, sio.readable(), sio.writable(), sio.seekable())
<_io.StringIO object at 0x0000010B14ECE4C8> True True True
>>> sio.write("hello,world!")
12
>>> sio.seek(0)
0
>>> sio.readline()
'hello,world!'
>>> sio.getvalue()  # 无视指针,输出所有内容
'hello,world!'
>>> sio.close()
优势
通常来讲,磁盘的操做比内存的操做要慢得多,内存足够的状况下,通常的优化思路是少落地,减小磁盘IO的过程,能够大大提升程序的运行效率
 
 

BytesIO

  • io模块中的类  from io import BytesIO
  • 内存中,开辟一个二进制模式的buffer,能够像文件对象同样操做它
  • 当close方法被调用的时候,这个buffer会被释放
 
BytesIO操做
>>> from io import BytesIO
>>> # 内存中构建
>>> bio = BytesIO()
>>> print(bio, bio.readable(), bio.writable(), bio.seekable())
<_io.BytesIO object at 0x0000010B14ED7EB8> True True True
>>> bio.write(b"hello,world!)
12
>>> bio.seek(0)
0
>>> bio.readline()
b'hello,world!'
>>> bio.getvalue()  # 无视指针,输出所有内容
b'hello,world!'
>>> bio.close()

 

file-like对象

类文件对象,能够像文件对象同样操做
socket对象、输入输出对象(stdin、stdout)都是类文件对象
>>> from sys import stdout
>>> f = stdout
>>> print(type(f))
<class 'ipykernel.iostream.OutStream'>
>>> f.write("hello,world!")
hello,world!
相关文章
相关标签/搜索