Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,这个for循环如何返回文本文件的最后一行?_Python_File - Fatal编程技术网

在Python中,这个for循环如何返回文本文件的最后一行?

在Python中,这个for循环如何返回文本文件的最后一行?,python,file,Python,File,for循环迭代文件中的行。每一行都被分配到最后一行,删除之前碰巧在那里的任何一行。在文件末尾,循环中断,而不为最后一行指定任何内容。因此,它将指定最后一个内容,即文件的最后一行。除非文件只有一行,这是由first_line=f.readline使用的。在这种情况下,没有为最后一行分配任何内容,您的程序将引发异常。它读取所有行,并最终打印它读取的最后一行,您在理解哪些部分时有困难?您正在使用最后一行作为当前行值的临时存储来迭代文本行。当您到达文件末尾时,循环停止,最后一行包含在文本文件最后一行的循

for循环迭代文件中的行。每一行都被分配到最后一行,删除之前碰巧在那里的任何一行。在文件末尾,循环中断,而不为最后一行指定任何内容。因此,它将指定最后一个内容,即文件的最后一行。除非文件只有一行,这是由first_line=f.readline使用的。在这种情况下,没有为最后一行分配任何内容,您的程序将引发异常。

它读取所有行,并最终打印它读取的最后一行,您在理解哪些部分时有困难?您正在使用最后一行作为当前行值的临时存储来迭代文本行。当您到达文件末尾时,循环停止,最后一行包含在文本文件最后一行的循环中已处理的最后一个值。@Selcuk我不理解代码如何生成文本文件的最后一行,尤其是从第4行到第6行。“first_line=f.readline”对for循环有何影响?@itsnicolodasilva98-f.readline reads文件的第一行或空字符串(如果文件为空)。当切换到迭代for循环中的file对象时,它将从当前文件位置(即第二行)继续。循环中的每一次循环都消耗一行直到文件结束。是否有其他方法可以使用与上述现有代码类似的结构获取文本文件的最后一行?这是一种很好的方法,除非文件很大。或者,您也可以以二进制模式打开文件,读取文件的结尾,然后重新查找文件中的最后一个b\n。这有点复杂,因为在找到要查找的新行之前,您可能必须重复尾部读取。您使用的方法很简单,不太可能有bug,因此除非您有性能问题,否则请坚持使用它。
filename = 'text_files/sample_text_file.txt'

with open(filename) as f:
    first_line = f.readline()
    for last_line in f:
        pass

print(last_line)