Проблематично для циклов: многократная печать строк, содержащих ключевые фразы из файлов в каталоге - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь написать скрипт для поиска ключевых фраз из каждого файла в моем корневом каталоге и распечатать строки из этих файлов, которые содержат ключевые фразы.В настоящее время мой сценарий может сканировать все файлы в моем каталоге и распечатывать строки, содержащие ключевые фразы, но он будет печатать его около 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)
...