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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值