Учитывая, что файл журнала большой, (более) эффективный способ проверки на ошибки - это перебирать файл по одной строке за раз и проверять каждую строку на соответствие вашим шаблонам.Вы не хотели бы держать в памяти огромный файл без необходимости.
В Python, вероятно, что-то вроде этого:
err = re.compile(': error(?::| [A-Z]*[\d ]*)|[A-Z]*\d* [Ee]rror:|' +
'" (?:Cannot open include file|Could not find) "|' +
'"(?:is not a member of|has not been declared)"')
with open('file.log') as f:
for line in f:
m = err.search(line)
if m is not None:
# this line indicates an error
, хотя вам, возможно, придется изменить регулярное выражение, чтобы оно соответствовалонеобходимо.Альтернативой может быть наличие списка статических строк, например,
err_list = ['error', 'Cannot open include file', 'Could not find', 'is not a member of', 'has not been declared']
и просто поиск каждой строки в каждой строке:
with open('file.log') as f:
for line in f:
if any(line.find(e) for e in err_list):
# this line indicates an error