在 python linux 中执行命令时,在 python 中给出是/否响应 os.system()

问题描述 投票:0回答:2

考虑像

这样的命令
yum install boto

当我在终端中执行时,要继续,会询问我是/否

我可以用Python来回应它吗

os.system("yum install boto")

Next

"Yes"
将通过相同的 python 代码传递到终端以便安装。嗯,我认为这不起作用。如果是写在上面的语句之后

os.system("yes")

请告诉我这是否可行?

python linux python-2.7 os.system
2个回答
7
投票

您可以使用 subprocess.Popen 并写入标准输入,您需要 sudo 的

-S
标志,然后只需其余命令。

from subprocess import Popen, PIPE
import getpass

pwd = getpass.getpass()
proc = Popen(['sudo', '-S', rest of commands ],stdout=PIPE, stdin=PIPE, stderr=PIPE,universal_newlines=True)
proc.stdin.write("{}\n".format(pwd))
out,err = proc.communicate(input="{}\n".format("yes"))

1
投票

您可以添加管道并执行

os.system("yes | yum install boto")

它会重复 yes 直到命令完成

© www.soinside.com 2019 - 2024. All rights reserved.