我需要一个脚本来读取目录中的所有文件,并在字符串列表中搜索关键字。如果文件中存在关键字,则文件名将保存到列表中。问题是,我有时会得到重复的名称文件,因为我的文件都有2行(标题为1,抽象为1)我在每行搜索一次 - 我想搜索一行所有行。
这是我现在的代码:
papers = []
files = []
for file in glob.glob("*.txt"):
with open(file) as f:
files.append(file)
for line in f:
for keyword in keywords:
if keyword in line: # search for string
print 'found ' + keyword + ' in file %s' % file
papers.append(file)
f.close()
注意:我知道用于消除重复的列表(集合(文件)),但这仅适用于我只搜索一个关键字时所需的内容。
任何帮助将不胜感激。谢谢
答案 0 :(得分:3)
您可以创建一个变量来检查您是否找到了匹配项,并在break
语句的末尾添加了if
语句。满足条件时,将变量设置为True
并跳出循环。
由于您使用f.close()
声明,因此您不需要with
。
例如:
papers = []
files = []
for file in glob.glob("*.txt"):
with open(file) as f:
files.append(file)
found_keyword = False
for line in f:
for keyword in keywords:
if keyword in line: # search for string
print 'found ' + keyword + ' in file %s' % file
papers.append(file)
found_keyword = True
break # break out of keyword loop
if found_keyword:
break # break out of line loop