2011-02-13 169 views
0

從文件中只讀取特定行(基於匹配文本)的最佳方式是什麼?這是我現在在做什麼:一個從文件中讀取特定行

match_txt = "lhcb" 
for inFile in os.listdir('.'): 
    readFile = open(inFile, 'r') 
    lines = readFile.readlines() 
    readFile.close() 

    for line in lines: 
     if line.find(match_txt)==0: 
      #< do stuff here > 

即我讀臺詞,只能用「LHCb的」在裏面,從本目錄中的一個的所有文件。這是做這件事的最好方法嗎?可以在不首先將整個文件加載到內存中的情況下完成嗎?

+0

可能重複)](http://stackoverflow.com/questions/2081836/reading-specific-lines-only-python) – 2011-02-14 03:39:26

+0

最好的方法?從搜索開始。 http://stackoverflow.com/questions/2081836/reading-specific-lines-only-python – 2011-02-14 03:39:43

回答

4

要做到這一點,而無需加載整個文件到內存中,只需遍歷文件:

match_txt = "lhcb" 
for file_name in os.listdir('.'): 
    with open(file_name) as f: 
     for line in f: 
      if line.startswith(match_txt): 
       #< do stuff here > 

如果你想在該行的任何地方以檢查match_txt,你可以使用

if match_txt in line: 

您的示例代碼等同於檢查行是否以match_txt開頭。

如果您使用的是很舊的Python版本不具有的with語句,你必須手動關閉該文件:[只讀特定行(Python中的

match_txt = "lhcb" 
for file_name in os.listdir('.'): 
    f = open(file_name) 
    for line in f: 
     if line.startswith(match_txt): 
      #< do stuff here > 
    f.close()