使用python子进程将stdout重定向到文件并终止,如果遇到stderr

时间:2018-11-13 22:33:22

标签: python-3.x subprocess

我正在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写入文件,然后检查文件是否为空,但是我觉得这是错误的方法这样做。

任何建议都值得赞赏,

0 个答案:

没有答案