是否可以保证file.read()读取整个文件?

时间:2018-10-19 23:20:57

标签: python text

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()不能保证始终返回文本文件的全部内容,即使很有可能会返回? 如果是这样,那么读取整个文本文件的正确方法是什么?

2 个答案:

答案 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上设置的模式,仅对代表套接字,管道或其他通信设备的“文件”有效。在非阻塞模式下,如果您尝试读取的数据超过当前可用的数据,则该文件将为您提供所拥有的内容,而不必等到足够的数据到达为止。