想象一下,我有一个带
的文件Xpto,50,30,60
Xpto,a,v,c
Xpto,1,9,0
Xpto,30,30,60
txt文件可以附加很多次,当我打开文件时我只想得到txt文件最后一行的值...我怎么能在python上做到这一点?读最后一行?
答案 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的字符。只需从该点向前读到文件的末尾,然后您将在文件的最后一行。