file.read()上的 Python 文档指出An empty string is returned when EOF is encountered immediately.
该文档进一步指出:
请注意,此方法可能会多次调用底层 C 函数 fread() 以获取尽可能接近 size 的字节。另请注意,在非阻塞模式下,即使没有给出大小参数,返回的数据也可能少于请求的数据。
我相信 Guido 已经表达了他对不添加 f.eof() 完全清晰的观点,因此需要使用 Python 方式!
但是,我不清楚的是,如果您从读取中收到的字节数少于请求的字节数,但您确实收到了一些字节,那么您是否已达到 EOF 是一个确定的测试。
IE:
with open(filename,'rb') as f:
while True:
s=f.read(size)
l=len(s)
if l==0:
break # it is clear that this is EOF...
if l<size:
break # ? Is receiving less than the request EOF???
break
如果您收到的字节数少于调用中请求的字节数,这是否是一个潜在的错误file.read(size)
?