2012-11-11 85 views
3

我有一個包含7000行字符串的文本文件。我需要根據幾個參數來搜索特定的字符串。如何在Python中高效地加載大文本文件

有人說下面的代碼效率不高(速度和內存使用率)。

f = open("file.txt") 
data = f.read().split() # strings as list 
  1. 首先,如果甚至不讓它作爲一個名單,我怎麼會甚至開始在所有的搜索?
  2. 加載整個文件是否有效?如果不是,該怎麼辦?
  3. 要過濾任何東西,我們需要搜索我們需要正確閱讀的東西!

有點混亂

+1

只要它適合在內存中讀取,一次就全部可能是最快的(如果這是你的工作效率的度量)... –

+0

@JoranBeasley我找的速度和內存效率。中間解決方案將是最好的。 –

+1

丹尼斯·裏奇是你的真實姓名嗎?使用死者的名字似乎對我來說是無味的。 –

回答

6

遍歷文件的每一行,而不存儲它。這將使程序內存高效。

with open(filname) as f: 
    for line in f: 
     if "search_term" in line: 
      break 
+2

如果內存使用量是您的效率衡量標準嗎?對?但如果你說話的計算速度可能更快加載一次? ...(雖然速度差異可能微不足道)... –

+1

@JoranBeasley我認爲就速度和內存而言,這應該做到這一點,而不是一次存儲整個文件。 –

+0

但是,重複超過7000行真的很大。是不是 –

相關問題