【发布时间】:2010-12-13 07:23:45
【问题描述】:
file.read() 上的 Python 文档指出 An empty string is returned when EOF is encountered immediately. 文档进一步指出:
请注意,此方法可能会调用 底层 C 函数 fread() 更多 不止一次努力获得 尽可能接近 size 字节。还 请注意,在非阻塞模式下, 可能比请求的数据少 返回,即使没有 size 参数 给了。
我相信 Guido 已经表达了他的观点,不添加 f.eof() PERFECTLY CLEAR 所以需要使用 Python 方式!
但是,我不清楚的是,如果您从读取中收到的字节数少于请求的字节数,但您确实收到了一些,那么您是否已达到 EOF 是否是一个确定的测试。
即:
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???
如果您收到的字节数少于对file.read(size) 的调用请求的字节数,这对break 是否有潜在错误?
【问题讨论】: