Python: подпроцесс и запуск bash script с несколькими аргументами
Как мне запустить bash script с помощью модуля подпроцесса, которому я должен дать несколько аргументов?
Это то, что я сейчас использую:
subprocess.Popen(['/my/file/path/programname.sh', 'arg1 arg2 %s' % arg3], \
shell = True)
bash script, кажется, не принимает ни одного из параметров в. Любые идеи очень ценятся!
Ответы
Ответ 1
Передайте аргументы в виде списка, см. самый первый пример кода в документах:
import subprocess
subprocess.check_call(['/my/file/path/programname.sh', 'arg1', 'arg2', arg3])
Если arg3
не является строкой; преобразуйте его в строку перед тем, как перейти к check_call()
: arg3 = str(arg3)
.
Ответ 2
subprocess.Popen(['/my/file/path/programname.sh arg1 arg2 %s' % arg3], shell = True).
Если вы используете shell = True
script, и его аргументы должны быть переданы как строка. Любые другие элементы в последовательности args
будут рассматриваться как аргументы оболочки.
Вы можете найти полные документы в http://docs.python.org/2/library/subprocess.html#subprocess.Popen.
Ответ 3
Привет, я знаю, что это решение довольно поздно, но может помочь кому-то.
Пример:
import subprocess
pass_arg=[]
pass_arg[0]="/home/test.sh"
pass_arg[1]="arg1"
pass_arg[2]="arg2"
subprocess.check_call(pass_arg)
В приведенном выше примере представлены параметры arg1 и arg2 в качестве оболочки оболочки script test.sh
По сути, подпроцесс ожидает массив. Таким образом, вы можете заполнить массив и предоставить его в качестве параметра.
Ответ 4
Вы забыли добавить args
имя.
subprocess.Popen(args=['./test.sh', 'arg1 arg2 %s' % arg3], shell=True)
Ответ 5
Еще один пример, который не включен во все вышеперечисленные,
subprocess.Popen(['/your/script.sh% s% s% s'% (аргумент1, аргумент2, аргумент3)], shell = True)
Обратите внимание, что при вводе% (аргумент1, аргумент2, аргумент3) не должно быть пробелов между% и (, например,% (аргумент1, аргумент2, аргумент3) недействителен.