如何从exec而不是popen捕获stdout / stderr?

时间:2017-02-06 20:25:52

标签: python

我想创建一个Python程序,它接受另一个Python文件作为参数,执行它并处理stdout / stderr,同时仍然将stdout / stderr返回给调用进程。基本上,这两个应该从最终用户的角度来看是相同的(尽管第一个是进行一些额外的处理,用户没有看到)

python passthrough.py some_example.py

VS

python some_example.py

我已经看过如何使用popen和pipe执行此操作的示例,但由于其他原因,我无法在子进程中执行此操作;它需要使用相同的解释,所以我需要使用exec。是否仍然可以这样做?为了更清楚,我希望passthrough.py的行为如下:

def process_output(text):
    pass
def process_err(text):
    pass

file_to_run = sys.argv[1]
sys.stdout = sys.stdout && process_output  # pipe stdout to sys.stdout AND some func
sys.stderr = sys.stderr && process_err # pipe stderr to sys.stdout AND some func
execfile(file_to_run) # Would actually use exec so it works with 3.x as well

0 个答案:

没有答案