什么是Python相当于C的读取功能?

时间:2016-11-30 17:47:26

标签: python c

C read

  

read()函数将尝试从与open文件描述符相关联的文件读取nbyte字节,fildes,到buf指向的缓冲区。

     

成功完成后,这些函数将返回一个非负整数,表示实际读取的字节数。否则,函数应返回-1并设置errno以指示错误。

Python的read

  

从流中读取最多n个字符。

     

从底层缓冲区读取,直到我们有n个字符或点击EOF 。       如果n为负数或省略,则读取直至EOF。

大胆的字体是我的。基本上,如果目前可用的数据小于缓冲区大小,Python将坚持找到EOF ...如何让它简单地返回任何可用的数据?

1 个答案:

答案 0 :(得分:3)

“Python read”我假设你的意思是read filefread方法。该方法在精神上更接近C read():它实现缓冲并尝试满足请求的数量,除非由于IO错误或文件结束条件而无法实现。

如果您确实需要在许多C环境中调用os.read()函数,可以调用os.read()来调用基础C函数。唯一的区别是它将读取的数据作为字节串返回,并且在C函数返回-1的情况下引发异常。

如果你打电话给fileno,请记得给它在文件对象上使用os方法获得的文件描述符,或者由os.open模块中的函数返回,例如os.pipe },{,os.open()等。还记得不要混合调用file.open()os.open(),因为后者会进行缓冲,并且可能导致以后调用{{1}}不返回缓冲区数据