我想创建一个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