gpt4 book ai didi

python - 如何响应 os.system 中的提示?

转载 作者:行者123 更新时间:2023-11-30 22:54:08 27 4
gpt4 key购买 nike

我正在尝试做这样的事情:

from subprocess import Popen
p = Popen(["vagrant", "ssh", "vmname", "-c", '"pvcreate -ff /dev/sdb"'])

但它需要用户输入。而且,这无论如何也行不通。他们给出错误:bash: pvcreate -ff /dev/sdb: command not found ,因为它正在寻找一个程序pvcreate -ff /dev/sdb ,而不是 pvcreate有论点。我也先尝试过这个:

p = Popen(["vagrant", "ssh", "vmname", "-c", "pvcreate", "-ff", "/dev/sdb"])

并且已经诉诸使用这个:

os.system("vagrant ssh vmname -c 'pvcreate -ff /dev/sdb'")

但是,当它提示我时,我需要说"is"。我也已经尝试过这些选项:

os.system("yes | vagrant ssh vmname -c 'pvcreate -ff /dev/sdb'")
os.system("echo y | vagrant ssh vmname -c 'pvcreate -ff /dev/sdb'")

是否可以使用 os.system 来响应提示?

最佳答案

我建议使用列表形式的调用。

import subprocess
command = ["vagrant", "ssh", "vmname", "-c", "pvcreate -ff /db/sdb"]
output,error = subprocess.Popen(
command, universal_newlines=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()

这表示将要传递的参数集,并且无需使用 shell 引用。

关于python - 如何响应 os.system 中的提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37933957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com