Popen包含需要对所有输出说"是"的命令

how*_*rks 2 python subprocess pipe popen

我需要自动执行以下命令

cmd="yes | vgremove <vgname>"
Run Code Online (Sandbox Code Playgroud)

每当我用这个命令编码

Popen(cmd.split(),stdout=PIPE,stderr=PIPE)
Run Code Online (Sandbox Code Playgroud)

它没有完成.我怀疑它等待命令完成,所以管道被击中,是否有替代品?

Wol*_*lph 7

在这种情况下有一种更简单的方法:

Popen('vgremove -f <vgname>')
Run Code Online (Sandbox Code Playgroud)

至于你的具体问题:

p = Popen(cmd.split(), stdout=PIPE, stderr=PIPE, stdin=PIPE)
p.stdin.write('yes')
Run Code Online (Sandbox Code Playgroud)