file.read()
的文档说:
Notice that when in non-blocking mode, less data than what was requested
may be returned, even if no size parameter was given.
这是否意味着file.read()
不能保证始终返回文本文件的全部内容,即使很有可能会返回?
如果是这样,那么读取整个文本文件的正确方法是什么?
答案 0 :(得分:1)
非阻塞模式不是您想要整个文件时通常使用的东西,因为非阻塞的目的是获取您正在等待的I / O上可用的任何数据,通常是一些异步流,可能有或没有任何东西。
如果是纯文本文件,则应执行以下操作:
with open("file.txt", "r") as infile:
for line in infile:
# something with a line of text here
print(line)
答案 1 :(得分:1)
对于不是常规文件的“文件”,如果您已专门打开的模式,其中file.read()
不会尝试读取所有内容,那么file.read()
可能不会阅读所有内容。
文档指定非阻止模式。非阻塞模式是可以在Unix中的file descriptor上设置的模式,仅对代表套接字,管道或其他通信设备的“文件”有效。在非阻塞模式下,如果您尝试读取的数据超过当前可用的数据,则该文件将为您提供所拥有的内容,而不必等到足够的数据到达为止。