StringIO和BytesIO
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StringIO和BytesIO相关的知识,希望对你有一定的参考价值。
StringIO: from io import StringIO 内存中,开辟的一个文本模式的buffer,可以像文件对象一样操作它 当close方法被调用的时候,这个buffer会被释放 getvalue() 获取全部内容,跟文件指针没有关系 例子: from io import StringIO sio = StringIO() print(sio.readable(), sio.writable(), sio.seekable())#可读可写可seek >>>True True True sio.write(‘test\npython‘) >>>11 sio.seek(0) >>>0 print(sio.readline()) >>>test print(sio.getvalue())#无视指针输出全部内容 >>>test python >>> sio.close() StringIO 好处: 磁盘的操作比内存操作要慢,内存足够的情况下,一般的优化思路是少落地,减少磁盘IO的 过程,可以提高程序的运行效率 BytesIO: io模块中的类: from io import StringIO 内存中开辟一个二进制模式的buffer,可以像文件对象一样操作它 当close方法被调用的时候,这个buffer会被释放 例子: from io import BytesIO bio = BytesIO() print(bio.readable(), bio.writable(), bio.seekable()) >>> True True True bio.write(b"test\npython") >>> 11 bio.seek(0) >>>0 print(bio.readline()) >>> b‘test\n‘ print(bio.getvalue()) >>>b‘test\npython‘ bio.close() file-like对象: 类文件对象,可以像文件对象一样操作 socket对象,输入输出对象(stdin、stdout)都是类文件对象 from sys import stdout f = stdout print(type(f)) >>><class ‘_io.TextIOWrapper‘> f.write(‘test.com‘) >>>test.com
以上是关于StringIO和BytesIO的主要内容,如果未能解决你的问题,请参考以下文章