L oop над именами файлов в папке и возвращать имя файла, если ключевое слово находится в файле - PullRequest
0 голосов
/ 21 июня 2020

Я кодирую эти простые требования: найдите ключевое слово и верните имя файла с таким ключевым словом

Это первая часть кода для поиска файлов 'txt'. Но у меня проблема с зацикливанием имен файлов: код просто показывает 1 результат (файл), в то время как ожидается, что будут перечислены все имена файлов.

import os

#list file names 
def list_file_name(path):
    fileList = os.listdir(path)
    return(fileList)

#Function 1: search key_word in txt file
def search_txt(path, keyWord):
    for file in list_file_name(path):
        if file.endswith('txt'):
            f = open(path + '/' + file, 'r')
            openFile = f.read()
            if keyWord in openFile:
                return('Key word {} is in {}'.format(keyWord, file))
            else:
                return('No key word found')
        continue

#run the function
print(search_txt(input('Please input folder path: '), input('Please input key word: ')))

1 Ответ

1 голос
/ 21 июня 2020

Вы можете попробовать это, создав список файлов с ключом:

def search_txt(path, keyWord):
    lsfiles=[]
    for file in list_file_name(path):
        if file.endswith('txt'):
            with open(path + '/' + file, 'r') as f:
                openFile = f.read()
                if keyWord in openFile:
                    lsfiles.append(file)
    if len(lsfiles)==0:
        return('No key word found ')
    else:
        return('Key word {} is in {}'.format(keyWord, ', '.join(lsfiles)))
    
...