python io模块bufferedreader_Python如何在io.BufferedReader?

BufferedIOReader的重点是保留一个内部缓冲区,并设置该缓冲区的大小。该缓冲区用于满足较小的读取,以避免在速度较慢的I/O设备上进行多次读取调用。在

不过,缓冲区不会限制读取的大小!在When reading data from this object, a larger amount of data may be requested from the underlying raw stream, and kept in an internal buffer. The buffered data can then be returned directly on subsequent reads.

该对象继承自^{},它声明:The main difference with RawIOBase is that methods read(), readinto() and write() will try (respectively) to read as much input as requested or to consume all given output, at the expense of making perhaps more than one system call.

因为您在对象上调用了.read(),所以从包装的对象读取更大的块,以将所有数据读取到底。BufferedIOReader()实例所保存的内部缓冲区在这里没有发挥作用,毕竟您要求提供所有数据。在

如果您在较小的块中读取,缓冲区将发挥作用:>>> reader = io.BufferedReader(MyReader(2048), buffer_size=512)

>>> __ = reader.read(42) # initial read, fill buffer

read buffer length: 512

>>> __ = reader.read(123) # within the buffer, no read to underlying file needed

>>> __ = reader.read(456) # deplete buffer, another read needed to re-fill

read buffer length: 512

>>> __ = reader.read(123) # within the buffer, no read to underlying file needed

>>> __ = reader.read() # read until end, uses larger blocks to read from wrapped file

read buffer length: 8192

read buffer length: 8192

read buffer length: 8192

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值