python bytesio_Python StringIO与BytesIO、类文件对象

StringIO与BytesIO

StringIO与BytesIO、类文件对象的用途,应用场景,优、缺点。

StringIO

StringIO 是io 模块中的类,在内存中开辟的一个文本模式的buffer,可以像文件对象一样操作它。当close 方法被调用的时候,这个buffer 会被释放。

好处:一般来说,磁盘的操作比内存的操作要慢的多,内存足够的时候,一般的优化思路是少落地,减少磁盘IO的过程,可以大大提高程序的运行速度。业务中单机情况可以使用StringIo或者BytesIO,多机就考虑使用 redis。

缺点:内存断电,buffer 中的数据会丢失,所以不建议存储很重要的数据,但可以存储日志之类的丢失也没有大影响的数据。

直接导入:form io import StringIO 使用:StringIO()

导入io 模块:import io 使用时调用StringIO方法:io.StringIO()

readline() 逐行读取

getvalue() 获取全部内容:

In [53]: from io import StringIO

In [54]: sio = StringIO()

In [55]: print(sio.readable(),sio.writable(),sio.seekable())

True True True

In [56]: sio.write("hello\nPython")

Out[56]: 12

In [57]: sio.seek(0)

Out[57]: 0

In [58]: sio.readline()

Out[58]: 'hello\n'

In [59]: sio.tell() #读取一行后,文件指针移到了下行行首

Out[59]: 6

In [60]: sio.getvalue() #不受文件指针影响,输出全部内容

Out[60]: 'hello\nPython'

In [61]: sio.close()

BytesIO

BytesIO 也是io模块中的类,内存中开辟的一个二进制模式的buffer,也可以像文件对象一样操作它,当close方法调用的时候,这个buffer也会被释放。

简单使用方法与StringIO 一样:

In [44]: from io import BytesIO

In [45]: bio = BytesIO()

In [46]: print(bio.readable(),bio.writable(),bio.seekable())

True True True

In [47]: bio.write(b'hello\nPython')

Out[47]: 12

In [48]: bio.seek(0)

Out[48]: 0

In [49]: bio.readline()

Out[49]: b'hello\n'

In [50]: bio.tell()

Out[50]: 6

In [51]: bio.getvalue()

Out[51]: b'hello\nPython'

In [52]: bio.close()

file-like对象

类文件对象,可以像文件对象一样操作

socket对象、输入输出对象(stdin、stdout)都是类文件对象

In [1]: from sys import stdout

In [2]: print(type(stdout))

#linux下可能是

In [3]: stdout.write('hello\nPython\n') #控制台打印

hello

Python

In [4]: stdout.close()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值