如何在 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 函数是使用 ()
调用的,而不是 []
- 后者用于索引序列或按键访问字典。
我是初学者,试图从 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 函数是使用 ()
调用的,而不是 []
- 后者用于索引序列或按键访问字典。