fp.read()
读取文件的末尾,因此,成功完成文件后,您知道文件位于EOF处;无需检查。如果无法达到EOF,则会引发异常。
当分块读取文件而不是用读取文件时read()
,您知道当read
返回的字节数少于您请求的字节数时,您遇到了EOF 。在这种情况下,以下read
调用将返回空字符串(不是None
)。以下循环读取大块文件;read
最多只会调用一次。
assert n > 0
while True:
chunk = fp.read(n)
if chunk == '':
break
process(chunk)
或者,更短:
for chunk in iter(lambda: fp.read(n), ''):
process(chunk)