Python re.compile против всех файлов в каталоге - не поиск всех файлов - PullRequest
0 голосов
/ 12 марта 2019

Я пишу скрипт на Python 3.7.2, который использует re.compile для поиска всех файлов в каталоге и возвращает каждую строку, в которой появляется конкретная строка. Работает нормально, за исключением двух проблем:

  1. В каталоге несколько сотен файлов, но скрипт работает только с первыми 25.
  2. Затем он повторно запускается против первых 25 на неопределенный срок.

Есть предложения? Вот сценарий:

import os
import re

err_occur = []
pattern = re.compile(r"An important phrase")
path = "/users/mypath/"

for filename in os.listdir(path):
    try:
        with open(os.path.join(path, filename), encoding="UTF-8") as in_file:
            for linenum, line in enumerate(in_file):
                if pattern.search(line) != None:
                    err_occur.append((linenum, line.rstrip('\n')))
            for linenum, line in err_occur:
                print(line, sep='')
    except FileNotFoundError:
        print("Input file not found.")

1 Ответ

0 голосов
/ 12 марта 2019

Я думаю, что ваша проблема с отступом.

Я переместил часть кода и удалил внутренний цикл for. Попробуйте этот код:

import os
import re

err_occur = []
pattern = re.compile(r"An important phrase")
path = "/users/mypath/"

for filename in os.listdir(path):

    try:
        with open(os.path.join(path, filename), encoding="UTF-8") as in_file:
            for linenum, line in enumerate(in_file):
                if pattern.search(line) != None:
                    err_occur.append((linenum, line.rstrip('\n')))
    except FileNotFoundError:
        print("Input file not found.")

for linenum, line in err_occur:
       print(line, sep='')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...