我一直试图让在python中运行的子进程要求我回答y / N提示。
我的代码如下:
process = subprocess.Popen(
[
"yes",
"|",
"mycommand",
"launch"
],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True
)
当我尝试启动此Popen命令时,程序挂起。
当我在Mac终端中运行相同的命令时,它运行正常:
yes | mycommand launch
默认设置是什么?
答案 0 :(得分:0)
您可以使用bash -c
或sh -c
:
#! /usr/bin/env python
import subprocess
def run_cmd(cmd):
result = subprocess.run([
'/bin/bash',
'-c',
cmd
], stdout=subprocess.PIPE)
returncode = result.returncode
stdout = result.stdout
return { 'returncode' : returncode, 'stdout': stdout}
r = run_cmd('yes | head')
print(r)
输出:
{'returncode': 0, 'stdout': b'y\ny\ny\ny\ny\ny\ny\ny\ny\ny\n'}
如果要将stdout打印为解码的字符串:
print(r['stdout'].decode('utf-8'))