【发布时间】:2017-04-15 03:56:57
【问题描述】:
C 的read:
read() 函数将尝试从与打开的文件描述符 fildes 关联的文件中读取 nbyte 字节到 buf 指向的缓冲区中。
成功完成后,这些函数应返回一个非负整数,指示实际读取的字节数。否则,函数应返回 -1 并设置 errno 以指示错误。
Python 的read:
从流中最多读取 n 个字符。
从底层缓冲区读取,直到我们有 n 个字符或我们点击 EOF。 如果 n 为负数或省略,则读取直到 EOF。
粗体字是我的。基本上,如果当前可用的数据小于缓冲区大小,Python 会坚持寻找 EOF……如何让它简单地返回可用的数据?
【问题讨论】:
-
它确实返回了可用的内容,
file.read(1024)将返回n字符,其中n是最多1024 个可用的字符数。你能用一个可重复的例子说明你需要什么吗? -
@RafaelBarros 仅当从非阻塞资源(例如常规文件)读取时才如此。从套接字或管道读取时,C 的
read()将等待只有 一些 数据可用,然后它将返回数据。 Python 的file.read将与 C 的fread()一样,尝试返回所有请求的数据,除非遇到错误或 EOF。 -
C 语言中没有
read。您引用的是您的操作系统提供的 API 手册。此类 API 通常具有针对 C 的绑定,但幸运的是也针对 Python。你想看看posix.read或os.read。