Операторы Python multiple if

-4

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

# Opening the log file for reading
with open(logFile, 'r') as logfile_read:
for line in logfile_read:
line = line.rstrip()

# To extract Time or iteration
if 'Time' in line:
iteration_time = re.findall(r'^Time\s+=\s+(.*)', line)

# To extract local, global and cumulative values

if 'local' in line:
local_global_cumu = re.search(r'sum\s+local\s+=\s+(.*),\s+global\s+=\s+(.*),\s+cumulative\s+=\s+(.*)', line)
if local_global_cumu:
contLocal_0_value = local_global_cumu.group(1)
contGlobal_0_value = local_global_cumu.group(2)
contCumulative_0_value = local_global_cumu.group(3)
for t in iteration_time:
contLocal.write("%s\t%s\n" %(t, contLocal_0_value))
contGlobal.write("%s\t%s\n" %(t, contGlobal_0_value))
contCumulative.write("%s\t%s\n" %(t, contCumulative_0_value))

# To extract execution and cpu time

if 'ExecutionTime' in line:
execution_cpu_time = re.search(r'^ExecutionTime\s+=\s+(.*)\s+s\s+ClockTime\s+=\s+(.*)\s+s', line)
if execution_cpu_time:
execution_time_0_value = execution_cpu_time.group(1)
cpu_time_0_value = execution_cpu_time.group(2)
for t in iteration_time:
print t

Во втором выражении if я могу получить значения t. Однако в последующем if заявлении, когда я пытаюсь print t, ничего не приходит. Я не знаю, где я ошибся.

спросил(а) 2015-01-20T05:20:00+03:00 5 лет, 9 месяцев назад
0
58

Следующие проверки, если "Время" является подстрокой в строке, затем пытается найти все совпадения в этой строке, которая начинается с "Время"...

if 'Time' in line:
iteration_time = re.findall(r'^Time\s+=\s+(.*)', line)

Следующее также содержит слово "Время":

if 'ExecutionTime' in line:
execution_cpu_time = re.search(r'^ExecutionTime\s+=\s+(.*)\s+s\s+ClockTime\s+=\s+(.*)\s+s', line)

Когда он пытается зациклиться на iteration_time он будет пуст, поскольку предыдущий if уже запущен и условие, которое оно начинается с "Time", означает, что вы получаете пустой список для его совпадений.

Позвольте просто притвориться, что у вас есть одна строка, начиная с "ExecutionTime", и пропустите ее...

    if 'Time' in line истинно, поэтому re.findall запускает и возвращает все совпадения для строки, начинающейся с "Time"... Это будет пустым, потому что строка не начинается с "Time" - поэтому iteration_time = [] if 'ExecutionTime' in line истинно, и строка начинается с "ExecutionTime", когда вы делаете for t in iteration_time - это не цикл, потому что выше установил, что это будет пустой!

ответил(а) 2015-01-20T06:22:00+03:00 5 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема