我正在使用subprocess
来调用命令行。例如,
subprocess.check_output(["echo", "Hello World!"])
这是一个论点。我想调用一个名为“myFuntion”的可执行文件,并按名称将几个参数传递给它。我写的命令行是:
./myFunction --arg1 a1 --arg2 a2
我如何“翻译”这个?
答案 0 :(得分:4)
简单:每个参数都是列表中的一个单独元素。
因此,如果您了解shell将如何分离出此命令行:
./myFunction --arg1 a1 --arg2 a2
......你知道论点是什么。当没有引号或转义或其他任何花哨的东西时,shell只会在空格上分开。所以这只是5个论点:
subprocess.check_output(["./myFunction", "--arg1", "a1", "--arg2", "a2"])
如果你有一个你不确定如何翻译的命令行,你可以让你的shell为你做这个......或者只是在Python中使用shlex
模块:
>>> print(shlex.split('./myFunction --arg1 a1 --arg2 a2'))
['./myFunction', '--arg1', 'a1', '--arg2', 'a2']