2008-11-29 63 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