从文件中只读取特定行(基于匹配文本)的最佳方法是什么?这就是我现在正在做的事情:
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 :(得分: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"):