Python之StringIO和BytesIO
Posted liguanzhen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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!
以上是关于Python之StringIO和BytesIO的主要内容,如果未能解决你的问题,请参考以下文章