В моем скрипте Python мне нужно запустить исполняемый файл как подпроцесс с x количеством параметров командной строки, которые исполняемый файл ожидает.
Пример:
- EG 1: myexec.sh param1 param2
- Пример 2: myexec.sh param1 $MYPARAMVAL
Мой код работает, когда параметр имеет известное значение (например, 1) и настроен, однако ожидается, что параметр может быть переменной среды и настроен как таковой, который следует интерпретировать при запуске time.(EG 2)
В приведенном ниже примере я использую echo вместо myexec.sh, чтобы продемонстрировать сценарий.
Это упрощено для демонстрации. проблема. «cmdlst» создается на основе файла конфигурации, который может представлять собой любой сценарий с любым количеством параметров и значений, которые могут быть значением или переменной среды.
test1 .py
Код: Выделить всё
import subprocess
import os
cmdlst = ['echo','param1','param2']
try:
proc = subprocess.Popen(cmdlst,stdout=subprocess.PIPE)
jobpid = proc.pid
stdout_value, stderr_value = proc.communicate()
except (OSError, subprocess.CalledProcessError) as err:
raise
print stdout_value
python test1.py
--> параметр1 параметр2
test2.py
Код: Выделить всё
import subprocess
import os
cmdlst = ['echo','param1','$PARAM']
try:
proc = subprocess.Popen(cmdlst,stdout=subprocess.PIPE)
jobpid = proc.pid
stdout_value, stderr_value = proc.communicate()
except (OSError, subprocess.CalledProcessError) as err:
raise
print stdout_value
экспорт PARAM=param2
echo $PARAM
--> param2
python test2.py< /p>
--> параметр1 $PARAM
Мне нужно, чтобы тест 2 дал тот же результат, что и тест 1, учитывая, что $PARAM будет известна только во время выполнения и ее нужно будет получить из текущей среды.
Жду ваших советов.
Подробнее здесь: https://stackoverflow.com/questions/374 ... cess-popen
Мобильная версия