StringIO和BytesIO

本文介绍了Python中使用StringIO和BytesIO进行内存中的文本和二进制数据操作的方法。StringIO适用于文本数据,BytesIO适用于二进制数据。两者都提供了类似文件对象的操作接口,如write、read等,并可以通过getvalue()获取全部内容。这些工具能够帮助开发者减少磁盘IO操作,提高程序运行效率。
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 

  

转载于:https://www.cnblogs.com/hkcs/p/7750242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值