首页 > 解决方案 > 将 stdout 重定向到文件并在使用 python 子进程遇到 stderr 时终止

问题描述

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

任何建议表示赞赏,

标签: python-3.xsubprocess

解决方案


推荐阅读