отсутствует вывод stderr из CalledProcessError в check_output - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть следующий блок кода в функции Python 3

try:
  score_string = subprocess.check_output([sys.executable, "-m", "query",
                                          lab,
                                          data_frame_path,
                                          prior_model_path,
                                          channel], stderr=subprocess.PIPE).decode('utf-8')
except subprocess.CalledProcessError as e:
  out_bytes = e.output       # Output generated before error
  err_bytes = e.stderr
  code = e.returncode   # Return code
  if log:
      log.error("Invocation of train_model on %s %s %s failed with error %d." %
                (lab, data_frame_path, prior_model_path, code))
      log.error("Error output is:")
      log.error(out_bytes.decode('utf-8'))
      if err_bytes is not None:
          log.error(err_bytes.decode('utf-8'))
      return None
return eval(score_string)

Однако, когда он обнаруживает ошибку в подпроцессе, он не печатает ничего из вывода, который при stderr.Все, что я вижу:

2019-02-18 17:29:18 ERROR    Invocation of train_model on Transcriptic ../data/pipeline/experiment.r1bbm2c4eyvsp_amazed-sponge_mefl_hist\
.csv ../data/trained/pipeline_mefl_hist/ failed with error 1.
2019-02-18 17:29:18 ERROR    Error output is:
2019-02-18 17:29:18 ERROR

Я подозреваю, что есть какая-то проблема с тем, как я вызываю check_output, и в частности аргумент stderr.Я прочитал документацию, но не смог ее понять.Я считаю, что должен сделать что-то , чтобы захватить stderr, чтобы вставить его в CalledProcessError, но я не знаю, что правильно делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...