Python 中的 read() 和 read1() 有什么区别?

She*_*hen 8 python python-3.x

最近我在学习python,然后我意识到python文档中存在一个read1()。我想知道 read() 和 read1() 之间有什么区别?什么情况下我们应该使用 read1() 而不是 read()?

https://docs.python.org/3/library/io.html#io.BufferedReader

Sam*_*iel 7

简而言之,read([size])确保它读取size字节(或直到EOF),并且在必要时可能涉及对底层 IO 对象的多次读取。

read1([size])是获取size缓冲区中可用的任何数据(最多字节)。如果缓冲区中没有数据,则read()对 IO 对象最多执行 1 。

详细说明:

read([size]):如果size为负数或无,则调用底层原始流的readall()方法,该方法将一直读取直到EOF达到 或者它将在非阻塞模式下阻塞。底层原始流是鸭子类型的,这意味着如果它没有readall(),则对原始流进行多次调用,read()直到EOF到达或阻塞。

如果size是正数,read()则从缓冲区返回可用数据。如果可用数据小于size,则read()对原始流进行多次调用,直到size字节可用或达到 EOF。

read1([size])另一方面,返回缓冲区上可用的任何数据,即使它小于size,如果没有数据可用且size大于 0,则它最多read()对底层 IO 对象进行一次调用。

如果size省略或 < 0,则使用size可用缓冲区,因此read()在这种情况下不会对原始流执行调用。