Из моего скрипта python 3.6 я должен использовать внешнюю программу (двоичную), которая в настоящее время имеет известную ошибку, возникающую время от времени по заданным причинам, и аварийно завершает свою работу + моя основная python программа, говорящая Floating point exception (core dumped)
.
Я хочу иметь возможность перехватить и / или игнорировать эту ошибку, чтобы мой python сценарий мог продолжить выполнение. Я уже знаю, что не могу использовать обычный синтаксис try / catch, но мне действительно нужно go обойти эту ошибку, какой бы ни была стратегия. Тем не менее, я понятия не имею, как.
Мой код выглядит так:
#!/usr/bin/env python3
import subprocess
for i in range(1000):
my_cmd = 'CALL TO PROGRAM THAT BUGS 20% OF THE TIME'
my_process = subprocess.Popen([my_cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
cmd_out = my_process.communicate()[1].decode() # this should correctly wait for termination
# here python exits when my_cmd crashed because of FPE
if my_process.returncode == 0:
print('All good')
else:
print('Program crashed:', cmd_out) # never printed
# here I want to be able to go to the next loop iteration and perform all 1000 iterations
На cra sh все, что я получил, это распечатка, похожая на эту:
All good
All good
All good
All good
Floating point exception (core dumped)
Не могли бы вы дать предложения?
Большое спасибо