从文件中读取特定行

时间:2011-02-13 23:21:53

标签: python

从文件中只读取特定行(基于匹配文本)的最佳方法是什么?这就是我现在正在做的事情:

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”,从目前的目录中的所有文件一个接一个。这是最好的方式吗?可以在不首先将整个文件加载到内存中的情况下完成吗?

2 个答案:

答案 0 :(得分: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语句,则必须手动关闭该文件:

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()

答案 1 :(得分:3)

你应该查看str.startswith()函数。

if line.startswith("text"):

http://docs.python.org/library/stdtypes.html#str.startswith