Переменные среды настройки/чтения
Возможный дубликат:
Как установить переменные среды в Python
Мой python script, который вызывает много функций python и скриптов оболочки. Я хочу установить переменную среды в Python (главную функцию вызова) и все дочерние процессы, включая сценарии оболочки, чтобы увидеть набор переменных среды.
Мне нужно установить некоторые переменные среды следующим образом:
DEBUSSY 1
FSDB 1
1
- это число, а не строка. Кроме того, как я могу прочитать значение, хранящееся в переменной окружения? (Как DEBUSSY
/FSDB
в другом дочернем python script.)
Ответы
Ответ 1
Попробуйте использовать модуль os
.
import os
os.environ['DEBUSSY'] = '1'
os.environ['FSDB'] = '1'
# Open child processes via os.system(), popen() or fork() and execv()
someVariable = int(os.environ['DEBUSSY'])
Смотрите Документы Python на os.environ
. Кроме того, для нереста дочерних процессов см. Python подпроцесс docs.
Ответ 2
Сначала первые вещи:). Чтение книг - отличный подход к решению проблем; это разница между исправлениями по методу оказания помощи и долгосрочными инвестициями в решение проблем. Никогда не упускайте возможность учиться.: D
Вы можете интерпретировать 1
как число, но переменные окружения не заботятся. Они просто передают строки:
The argument envp is an array of character pointers to null-
terminated strings. These strings shall constitute the
environment for the new process image. The envp array is
terminated by a null pointer.
(From environ(3posix)
.)
Вы используете переменные среды в python, используя os.environ
словарь-подобный объект:
>>> import os
>>> os.environ["HOME"]
'/home/sarnold'
>>> os.environ["PATH"]
'/home/sarnold/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
>>> os.environ["PATH"] = os.environ["PATH"] + ":/silly/"
>>> os.environ["PATH"]
'/home/sarnold/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/silly/'
Ответ 3
Если вы хотите передать глобальные переменные в новые скрипты, вы можете создать файл python, предназначенный только для хранения глобальных переменных (например, globals.py). Когда вы импортируете этот файл в верхней части дочернего элемента script, он должен иметь доступ ко всем этим переменным.
Если вы пишете эти переменные, то это совсем другая история. Это связано с concurrency и блокировкой переменных, с которыми я не собираюсь входить, если вы не хотите.
Ответ 4
Используйте os.environ[str(DEBUSSY)]
для чтения и записи (http://docs.python.org/library/os.html#os.environ).
Что касается чтения, вы должны, конечно, самостоятельно разбирать номер из строки.