Как использовать существующую переменную среды в subprocess.Popen()Python

Программы на Python
Ответить
Anonymous
 Как использовать существующую переменную среды в subprocess.Popen()

Сообщение Anonymous »

Сценарий

В моем скрипте Python мне нужно запустить исполняемый файл как подпроцесс с x количеством параметров командной строки, которые исполняемый файл ожидает.

Пример:
  • EG 1: myexec.sh param1 param2
  • Пример 2: myexec.sh param1 $MYPARAMVAL
Исполняемый файл и параметры неизвестны, поскольку они настроены и получены из внешнего источника (конфигурация XML) по адресу время выполнения.

Мой код работает, когда параметр имеет известное значение (например, 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
РЕЗУЛЬТАТ ТЕСТА 1

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
РЕЗУЛЬТАТ ТЕСТА 2

экспорт PARAM=param2
echo $PARAM

--> param2
python test2.py< /p>

--> параметр1 $PARAM

Мне нужно, чтобы тест 2 дал тот же результат, что и тест 1, учитывая, что $PARAM будет известна только во время выполнения и ее нужно будет получить из текущей среды.

Жду ваших советов.

Подробнее здесь: https://stackoverflow.com/questions/374 ... cess-popen
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»