Как выполнить l oop через .txt файлы и найти указанную строку c? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть несколько файлов журнала .txt, и я ищу способ l oop просмотреть все из них и найти определенную строку c внутри. После того, как найдены все результаты, будут напечатаны в новом .txt файле. Пока мне удалось создать это:

import os
stringToMatch = 'dataToLookFor'
matchedLine = ''

with open('Logs/mylogs.txt', 'r') as file:
    for line in file:
        if stringToMatch in line:
        matchedLine = line
        continue

with open('Logs/results.txt', 'w') as file:
    file.write(matchedLine)

С этим я могу найти результаты 1 на 1, но только в файле mylogs.txt. Любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Вы должны взглянуть на пакет glob . С помощью этого пакета вы можете найти все *.txt файлы и выполнить необходимые операции:

import glob

files = glob.glob('Logs/*.txt')

выдаст вам список файлов с расширением txt в папке Logs.


Имея это, вы можете go просмотреть все файлы и сохранить соответствующие строки в некотором выходном файле:

string_to_match = 'dataToLookFor'

with open('Logs/results.txt', 'w') as outfile:
    for f in files:
        with open(f, 'r') as infile:
            for line in infile:
                if string_to_match in line:
                    outfile.write(f'{f}: {line}')
0 голосов
/ 06 апреля 2020

Не уверен, если это именно так, как это должно выглядеть, но вы можете использовать os.listdir ("Журналы"), чтобы получить все файлы в этом каталоге:

import os
stringToMatch = 'dataToLookFor'
matchedLine = ''

for file in os.listdir("Logs"):
    if ".txt" in file:
        with open('Logs/'+file, 'r') as file:
            for line in file:
                if stringToMatch in line:
                    matchedLine = line
                    continue

            with open('Logs/results.txt', 'w') as file:
                file.write(matchedLine)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...