2015-05-10 2 views
2

Я использую subprocess для вызова командной строки. Например,Командная строка в скрипте Python

subprocess.check_output(["echo", "Hello World!"]) 

Это для одного аргумента. Я хочу вызвать исполняемый файл под названием «myFuntion» и передать несколько аргументов, по их именам. Командная строка, которую я бы написал, это:

./myFunction --arg1 a1 --arg2 a2 

Как мне «перевести» это?

ответ

4

Простой: каждый аргумент является отдельным элементом в списке.

Так что, если вы понимаете, как оболочка будет отделить эту командную строку:

./myFunction --arg1 a1 --arg2 a2 

... вы знаете, что аргументы. Когда нет кавычек или экранов или что-то еще, они просто разделяются на пробелы. Так что это всего 5 аргументов:

subprocess.check_output(["./myFunction", "--arg1", "a1", "--arg2", "a2"]) 

Если у вас есть командная строка, что вы не знаете, как перевести, вы можете попросить оболочку сделать это для вас ... или просто использовать shlex модуль в Python:

>>> print(shlex.split('./myFunction --arg1 a1 --arg2 a2')) 
['./myFunction', '--arg1', 'a1', '--arg2', 'a2']