Я пишу конвейер в Python 3.6, который внутренне выполняет несколько программ на основе командной строки. Каждое внутреннее программное обеспечение выполняется с использованием subprocess.run()
. Я хочу
- перенаправить
stdout
каждого программного обеспечения в отдельный файл,
- если есть ошибка, вызванная внутренним программным обеспечением, я хочу перенаправить ошибку на
stderr
(чтобы пользователь мог ее увидеть), перенаправить в отдельный файл и прекратить выполнение конвейера.
Первый шаг, который я делаю так:
with open("outfile", "wb", 0) as outfile:
subprocess.run(cmd, stdout=outfile, check=True)
Мой вопрос 1: есть ли лучший способ добиться того же? В конвейере много команд, и я не хочу открывать отдельный файл для каждой из них.
Относительно второго вопроса, поэтому я не уверен, как его решить: одним из способов было бы записать stderr
в файл, а затем проверить, является ли файл пустым, но я чувствую, что это неправильный способ сделать это .
Любые предложения приветствуются,