Надеюсь, это простой вопрос по питону.
Когда я пытаюсь сделать следующее в интерпретаторе 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'])
Это даст мне немедленное новое приглашение.
Последний пример ближе всего к тому, что я хочу. Моя цель - запустить дочерний процесс, дождаться его завершения, а затем использовать его стандартный вывод в моем родительском процессе, обратившись к p.stdout
, позволяя stderr просто печатать туда, где он был бы иначе.
Прямо сейчас в моем реальном приложении последняя версия просто висит на:
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
с или без p.wait()
.
Спасибо
Charlie