我希望这是一个简单的python问题。
当我在 python 解释器中尝试以下操作时:
>>> import process
>>> def test(cmd):
... p = subprocess.Popen(cmd)
...
>>> test(['ls', '-l'])
它将运行ls -l
,但我需要点击“return”以获得新的 >>> 提示。
但是,当我尝试以下操作时:
>>> import process
>>> def test(cmd):
... p = subprocess.Popen(cmd)
... p.wait()
...
>>> test(['ls', '-l'])
然后ls -l
将立即运行 >>> 提示符。
另一种变体:
>>> import process
>>> def test(cmd):
... p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
...
>>> test(['ls', '-l'])
这会给我一个立即的新提示。
最后一个例子最接近我想要的。我的目标是启动一个子进程,等待它完成,然后通过引用在我的父进程中使用它的 stdout,p.stdout
同时让 stderr 打印到其他地方。
现在在我的实际应用程序中,最后一个版本只是挂在:
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
有或没有p.wait()
.
谢谢,
查理