Python 从文件中读取特定行

Python 从文件中读取特定行,python,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: #&l

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

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 >
match_txt=“lhcb”
对于os.listdir('.')中的填充:
readFile=open(填充“r”)
lines=readFile.readlines()
readFile.close()
对于行中的行:
如果line.find(match_txt)==0:
#<在这里做事>

i、 我正在从当前目录中的所有文件中一行一行地读这些行,其中只有“lhcb”。这是最好的方法吗?如果不首先将整个文件加载到内存中,是否可以执行此操作?

您应该查看str.startswith()函数

if line.startswith("text"):

要在不将整个文件加载到内存的情况下执行此操作,只需对文件进行迭代:

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
开头

如果您使用的是一个非常旧的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()
match_txt=“lhcb”
对于os.listdir('.')中的文件名:
f=打开(文件名)
对于f中的行:
如果line.startswith(匹配_txt):
#<在这里做事>
f、 关闭()

一开始我实际上没有注意到检查只针对行开头的
match\u txt
,因此+1适用于您@Sven,@Enders:str.find()是否只有在该行以该行开头时才起作用?事实上,在我尝试find()的地方,“匹配”就在开始时,并且成功了。虽然,我实际上并不是这么做的。谢谢您提供的信息。@MacUsers:
str.find()
返回找到字符串的索引,如果找不到ot,则返回-1。条件中的
==0
部分将仅捕获字符串以匹配项开头的情况。您可以使用
line.find(match_txt)>=0
,但这相当于行中更直观的
match_txt
。我应该在哪里关闭()文件?我似乎不太幸运使用“with”语句。它似乎是在第2.5版中引入的,但我使用的是第2.3版,不幸的是,在这个特定的框中,我必须坚持第2.3版。还有别的办法吗?干杯@MacUsers:我已经自由地编辑了Sven的答案,其中包含了一个不使用
的示例。最好的方法是否可能重复?从搜索开始。
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()