2011-02-13 172 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()