如何跳轉到一個巨大的文本文件中的特定行?以下代碼是否有其他替代方法:startFromLine = 141978 # or whatever line I need to jump tourlsfile = open(filename, "rb", 0)linesCounter = 1for line in urlsfile:
if linesCounter > startFromLine:
DoSomethingWithThisLine(line)
linesCounter += 1如果我正在(~15MB)使用未知但不同長度的行處理一個巨大的文本文件,并且需要跳轉到我事先知道的特定行?當我知道我至少可以忽略文件的前半部分時,我會逐個處理它們。尋找更優雅的解決方案,如果有的話。
3 回答

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
inecache:
該
linecache
模塊允許從Python源文件獲取任何行,同時嘗試使用緩存在內部進行優化,這是從單個文件中讀取許多行的常見情況。traceback
模塊使用它來檢索源行以包含在格式化的回溯中...

ITMISS
TA貢獻1871條經驗 獲得超8個贊
如果線條的長度不同,你真的沒有那么多的選項...你可能需要處理行結束字符以了解你何時進展到下一行。
但是,您可以通過將最后一個參數更改為“打開”到非0的值來顯著加快速度并減少內存使用量。
0表示文件讀取操作是無緩沖的,這非常慢并且磁盤密集。1表示文件是行緩沖的,這將是一種改進。大于1的任何東西(比如8k ......即:8096或更高)將文件的塊讀取到內存中。你仍然可以訪問它for line in open(etc):
,但是python一次只能進行一些操作,在處理后丟棄每個緩沖的塊。
添加回答
舉報
0/150
提交
取消