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
'''

 

posted @ 2018-10-19 14:53  soulgou  阅读(179)  评论(0编辑  收藏  举报