2008-11-29 88 views
3

想象我有阅读最后lineof文件

Xpto,50,30,60 Xpto,A,V文件,C Xpto,1,9,0 Xpto,30,30,60

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

感谢

+1

重复http://stackoverflow.com/questions/260273/most-efficient-way-to-search-the-last-x-lines-of-a-file-in-python的 – 2008-11-29 20:05:48

+0

见回答这个问题:http://stackoverflow.com/questions/260273/most-efficient-way-to-search-the-last-x-lines-of-a-file-in-python。 – 2008-11-29 18:05:33

回答

-1

不知道有关蟒蛇具体实现,但在一个更加语言无关的方式,你会想要做的就是跳过(寻求)在文件的结尾,然后阅读向后每个字符直到您到达您的文件正在使用的换行符,通常是一个值为13的字符。只需从该点向前读取文件的末尾,并且您将在文件中有最后一行。

10

我认为我从last time this came up得到的回答很遗憾。 :-)

如果你在UNIX系统中, os.popen("tail -10 " + filepath).readlines()可能 是最快的方法。否则,它 取决于你想要它有多强壮 是。到目前为止提出的方法将会以某种方式跌落。 对于最 常见的情况的鲁棒性和速度,你可能想 像对数搜索: 使用file.seek去文件 减去1000个字符的结束,阅读它, 检查有多少行包含,然后 到EOF减去3000个字符,在 2000个字符阅读,算上线,然后 EOF减去7000,在4000个 字符读,算上线等 直到你有尽可能多的线,你需要 。但如果你确定知道 它总是在文件 上以明显的行长运行,你可能不需要那个。

您也可能会发现为UNIX tail命令一些灵感 在source code

1

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

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

0

嗯,为什么不只是寻求到文件的结尾,并阅读直到你遇到一个换行符?

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