перенаправить stdout в файл и завершить работу, если stderr встречается с использованием подпроцесса python - PullRequest
0 голосов
/ 14 ноября 2018

Я пишу конвейер в Python 3.6, который внутренне выполняет несколько программ на основе командной строки. Каждое внутреннее программное обеспечение выполняется с использованием subprocess.run(). Я хочу

  1. перенаправить stdout каждого программного обеспечения в отдельный файл,
  2. если есть ошибка, вызванная внутренним программным обеспечением, я хочу перенаправить ошибку на stderr (чтобы пользователь мог ее увидеть), перенаправить в отдельный файл и прекратить выполнение конвейера.

Первый шаг, который я делаю так:

with open("outfile", "wb", 0) as outfile:
    subprocess.run(cmd, stdout=outfile, check=True)

Мой вопрос 1: есть ли лучший способ добиться того же? В конвейере много команд, и я не хочу открывать отдельный файл для каждой из них.

Относительно второго вопроса, поэтому я не уверен, как его решить: одним из способов было бы записать stderr в файл, а затем проверить, является ли файл пустым, но я чувствую, что это неправильный способ сделать это .

Любые предложения приветствуются,

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