Я пытаюсь написать скрипт для поиска ключевых фраз из каждого файла в моем корневом каталоге и распечатать строки из этих файлов, которые содержат ключевые фразы.В настоящее время мой сценарий может сканировать все файлы в моем каталоге и распечатывать строки, содержащие ключевые фразы, но он будет печатать его около 70 раз, если он существует только один раз в этих файлах.Например, если бы во всем каталоге было ONE LINE , он бы напечатал эту конкретную строку, например, 70 раз.Я подозреваю, что что-то не так с моими циклами for, но я не смог отладить проблему.Я надеюсь, что мой сценарий будет печатать только эти строки столько раз, сколько они действительно появляются в файле.Я новичок в Python, пожалуйста, помогите!Спасибо!
import os
path = "D:\\MyFolder\\" #The root directory I hope to scan all the files from
important = [] #The array for storing the lines with the key phrases
key_phrases = ["testing example1", "testing example2"] #If the lines contain these key phrases, it should be stored into the important array and printed in the end
for (path, subdirs, files) in os.walk(path):
files = [f for f in os.listdir(path) if f.endswith('.txt') or f.endswith('.log')] #The follow 3 lines are to make the file openable
files.sort() # file is sorted list
files = [os.path.join(path, name) for name in files]
for filename in files:
with open(filename) as f:
f = f.readlines()
for line in f:
for phrase in key_phrases:
if phrase in line:
important.append(line)
break
print(important)