如何在 subprocess_check_output 中传递用户输入变量?

How do I pass a user input variable inside subprocess_check_output?

我是初学者,试图从 Pyramid 中的用户获取 shell 命令并将其传递给 subprocess.check_output["thisisthecommand"]

变量存储在myvar中。 Eg:myvar="echo helloworld" 如何在我的子进程中传递这个变量 check_output?

我试过这样做 subprocess.check_output[myvar] 但它不起作用。金字塔抛出错误 'AttributeError:NoneType object has no attribute' 请帮忙。

根据 documentation(以及其中的示例),您需要在列表中分隔命令和参数。例如,

subprocess.check_output(['echo', 'hello'])

应该可以。有一个 shell 选项可以让你写 subprocess.check_output('echo hello', shell=True) 但出于安全原因最好别管它。

如果您使用包含命令的变量 myvar,您可以使用 shlex.split() 生成适合传递给 check_output() 的列表:

import shlex, subprocess
myvar = 'echo hello'
args = shlex.split(myvar)
output = subprocess.check_output(args)
>>> args
['echo', 'hello']

顺便说一下,Python 函数是使用 () 调用的,而不是 [] - 后者用于索引序列或按键访问字典。