Python学习week7-StringIO与BytesIO
1、stringIO
# io模块中的类,导入方法:from io import StringIO
# 内存中会开辟一个文本模式的buffer,可以像文件对象一样操作它
# 当close方法被调用的时候,这个buffer会被释放;
2、stringIO操作
# getvalue() 获取全部内容,跟文件指针没关系;
from io import StringIO sio=StringIO() print(sio.writable(),sio.readable(),sio.seekable()) # sio对象可写,可度,指针可移动 sio.write('hello world') sio.seek(0) print(sio.readline()) print(sio.getvalue()) # 获取buffer中的内容,与文件指针无关 sio.close() ''' 运行结果: True True True hello world hello world '''
3、stringIO的特点
# 一般来说,磁盘的操作比内存的操作要慢的多,内存足够的情况下,一般的优化思路是少落地,减少磁盘的io过程,可以提高程序运行的效率;’
4、BytesIO
# io模块中的类,导入:from io import BytesIO
# 内存中开辟一个二进制模式的buffer,可以像文件对象一样操作,当被调用close方法时候,这个buffer会被释放;
5、BytesIO的操作
# 操作与stringIO对象类似,但是写入数据的类型必须为bytes类型
bio=BytesIO() bio.write(b'ni hao') # 注意写入内容要是bytes类型 bio.seek(0) print(bio.readline())
6、file-like对象
# 类文件对象,可以像文件一样操作;socket对象,输入输出对象都是类文件对象;
from sys import stdout,stderr f=stdout print(type(f)) f.write('hello world') ''' 运行结果: <class '_io.TextIOWrapper'> hello world '''