阅读文件的最后一行

时间:2008-11-29 18:03:03

标签: python

想象一下,我有一个带

的文件
Xpto,50,30,60
Xpto,a,v,c
Xpto,1,9,0
Xpto,30,30,60

txt文件可以附加很多次,当我打开文件时我只想得到txt文件最后一行的值...我怎么能在python上做到这一点?读最后一行?

4 个答案:

答案 0 :(得分:10)

我认为last time this came up的回答令人遗憾地被忽视了。 : - )

  

如果你在unix盒子上,   可能os.popen("tail -10 " + filepath).readlines()   是最快的方式。否则,它   取决于你想要的强大程度   是。到目前为止提出的方法将   所有人都跌倒了,不管怎样。   最大限度地提高稳定性和速度   您可能想要的常见情况   像对数搜索这样的东西:   使用file.seek转到文件末尾   减去1000个字符,请阅读,   然后检查它包含多少行   到EOF减去3000个字符,请读入   2000个字符,然后计算行数   EOF减去7000,读入4000   字符,计算行数等   直到你拥有和你一样多的线条   需要。但如果你肯定知道的话   它总是会在文件上运行   你可以用合理的线长度   不需要那个。

     

您可能也会找到一些灵感   在source code中为unix   tail命令。

答案 1 :(得分:1)

f.seek( pos ,2)寻求相对于文件末尾的'pos'。 尝试pos的合理值然后readlines()并获取最后一行。

你必须考虑'pos'不是一个好的猜测,即假设你选择300,但最后一行是600个字符长!在这种情况下,只需用合理的猜测再试一次,直到你捕获整条线。 (这种最坏的情况应该非常罕见)

答案 2 :(得分:0)

嗯,为什么不只是寻找文件的末尾并阅读直到你换到换行符?。

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

答案 3 :(得分:-1)

不确定python特定的实现,但是以更加语言无关的方式,你想要做的是跳过(搜索)到文件的末尾,然后按顺序读取每个字符,直到你到达该行您的文件正在使用的提要字符,通常是值为13的字符。只需从该点向前读到文件的末尾,然后您将在文件的最后一行。