Python subprocess/Popen с измененной средой

Я полагаю, что выполнение внешней команды с немного измененной средой является очень общим падежом. Это - то, как я склонен делать это:

import subprocess, os
my_env = os.environ
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
subprocess.Popen(my_command, env=my_env)

У меня есть инстинктивное чувство, что существует лучший путь; это выглядит в порядке?

255
задан tacaswell 6 January 2016 в 17:57
поделиться

3 ответа

you might use my_env.get("PATH", '') instead of my_env["PATH"] in case PATH somehow not defined in the original environment, but other than that it looks fine.

23
ответ дан 23 November 2019 в 02:46
поделиться

Параметр env принимает Словарь. Вы можете просто взять os.environ, добавить к нему ключ (желаемую переменную) (к копии dict, если необходимо) и использовать его в качестве параметра для Popen .

3
ответ дан 23 November 2019 в 02:46
поделиться

В определенных обстоятельствах вы можете захотеть передать только те переменные среды, которые нужны вашему подпроцессу, но я думаю, что в целом вы поняли правильную идею (вот как Я тоже так делаю).

0
ответ дан 23 November 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: