Python, чтение лог-файла, не работает код

Почему не работает?

import re

# В этом списке собираются подстроки для проверки через in
bad_line_parts = [
    'Standby redo logfile selected for thread'
]
bad_reg_exprs = [
    re.compile('[A-Z][a-z]{2} [A-Z][a-z]{2} \d{1,2} \d\d:\d\d:\d\d \d{4}'),
    # здесь дополнить другими регулярными выражениями, если потребуется
]

message = input(':')


def is_fine_line(line):
    return (not any(bad_line_part in line
                    for bad_line_part in bad_line_parts) and
            not any(bad_reg_expr.match(line)
                    for bad_reg_expr in bad_reg_exprs))


def openning(message):
    with open(message, 'r') as log_file:
        for line in log_file.readlines():
            if is_fine_line(line):
                print(line)

Хотя этот код запускается

import re
# В этом списке собираются подстроки для проверки через in
bad_line_parts = [
    'Standby redo logfile selected for thread'
]
bad_reg_exprs = [
    re.compile('[A-Z][a-z]{2} [A-Z][a-z]{2} \d{1,2} \d\d:\d\d:\d\d \d{4}'),
     # здесь дополнить другими регулярными выражениями, если потребуется
]

message=input(':')
def is_fine_line(line):
    return (not any(bad_line_part in line 
                    for bad_line_part in bad_line_parts) and 
            not any(bad_reg_expr.match(line) 
                    for bad_reg_expr in bad_reg_exprs))

with open(message, 'r') as log_file:
    for line in log_file.readlines():
        if is_fine_line(line):
            print(line)

!Это в IDLE]1 [Это в pycharm]2

Я хочу вызвать openning в др.программе просто


Ответы (1 шт):

Автор решения: Эникейщик

Нe работает потому что там нечему работать, кроме запроса input(":") Мало перенести код в функцию openning(), надо ещё эту функцию вызвать. И вот когда вы вызовете openning() в другой программе, все будет работать.

→ Ссылка