C read
:
read()函数将尝试从与open文件描述符相关联的文件读取nbyte字节,fildes,到buf指向的缓冲区。
成功完成后,这些函数将返回一个非负整数,表示实际读取的字节数。否则,函数应返回-1并设置errno以指示错误。
Python的read
:
从流中读取最多n个字符。
从底层缓冲区读取,直到我们有n个字符或点击EOF 。 如果n为负数或省略,则读取直至EOF。
大胆的字体是我的。基本上,如果目前可用的数据小于缓冲区大小,Python将坚持找到EOF ...如何让它简单地返回任何可用的数据?
答案 0 :(得分:3)
“Python read
”我假设你的意思是read
file
个fread
方法。该方法在精神上更接近C read()
:它实现缓冲并尝试满足请求的数量,除非由于IO错误或文件结束条件而无法实现。
如果您确实需要在许多C环境中调用os.read()
函数,可以调用os.read()
来调用基础C函数。唯一的区别是它将读取的数据作为字节串返回,并且在C函数返回-1的情况下引发异常。
如果你打电话给fileno
,请记得给它在文件对象上使用os
方法获得的文件描述符,或者由os.open
模块中的函数返回,例如os.pipe
},{,os.open()
等。还记得不要混合调用file.open()
和os.open()
,因为后者会进行缓冲,并且可能导致以后调用{{1}}不返回缓冲区数据