Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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 读取文件的最后一行_Python - Fatal编程技术网

Python 读取文件的最后一行

Python 读取文件的最后一行,python,Python,想象一下我有一个 Xpto,50,30,60 Xpto,a,v,c Xpto,1,9,0 Xpto,30,30,60 该txt文件可以附加很多次,当我打开该文件时,我只想得到txt文件最后一行的值。。。如何在python上实现这一点?阅读最后一行?不确定是否有特定于python的实现,但以一种与语言无关的方式,您要做的是跳过(查找)到文件的末尾,然后按倒序读取每个字符,直到到达文件正在使用的换行符,通常是一个值为13的字符。只需从这一点向前读到文件的最后一行,您就可以看到文件中的最后一行。我想

想象一下我有一个

Xpto,50,30,60
Xpto,a,v,c
Xpto,1,9,0
Xpto,30,30,60

该txt文件可以附加很多次,当我打开该文件时,我只想得到txt文件最后一行的值。。。如何在python上实现这一点?阅读最后一行?

不确定是否有特定于python的实现,但以一种与语言无关的方式,您要做的是跳过(查找)到文件的末尾,然后按倒序读取每个字符,直到到达文件正在使用的换行符,通常是一个值为13的字符。只需从这一点向前读到文件的最后一行,您就可以看到文件中的最后一行。

我想我的答案很遗憾被忽略了。:-)

如果您在unix设备上,
os.popen(“tail-10”+
readlines()
可能会 这是最快的方式。否则, 取决于您希望它的健壮程度 是到目前为止提出的方法将 一切都会以这样或那样的方式倒下。 在最短的时间内实现鲁棒性和速度 你可能想要的普通案例 类似于对数搜索: 使用file.seek转到文件末尾 减去1000个字符,读入, 检查它包含多少行,然后 若要减少3000个字符,请读入 2000个字符,数一数行,然后 EOF减7000,读取4000 字符、数行等。 直到你有尽可能多的台词 需要。但如果你能肯定的话 它总是在文件上运行 使用合理的线路长度,您可以 我不需要

你也可能会找到一些灵感 在unix的应用程序中
tail
命令

f.seek(pos,2)
查找相对于文件结尾的“pos”。 为pos尝试一个合理的值,然后readlines()并获取最后一行


您必须说明何时“pos”不是一个好的猜测,即假设您选择300,但最后一行是600个字符长!在这种情况下,只要用合理的猜测再试一次,直到捕捉到整条线。(这种最坏的情况应该非常罕见)

嗯,为什么不直接搜索到文件的末尾并一直读到遇到换行符

i=0
while(1):
    f.seek(i, 2)
    c = f.read(1)
    if(c=='\n'):
        break

从文件末尾向后一次读取一个字符非常昂贵。考虑一下你必须做些什么来实现这一目标。不确定在现实生活中会有多慢。无论如何,操作系统可能会对其进行优化,当您获取一个字节时,它可能会将整个扇区从硬盘驱动器交换到内存中。它能读得比一个扇区还少吗?除非您的最后一行是多个扇区,否则您可能不会注意到减速。请参阅此问题的答案:。重复的