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