Leer y escribir variables de entorno en Python?

Posible duplicado:
Cómo establecer variables ambientales en Python

Mi script de Python que llama a muchas funciones de Python y scripts de shell. Quiero establecer una variable de entorno en Python (función de llamada principal) y todos los procesos secundarios, incluidos los scripts de shell para ver el conjunto de variables de entorno.

Necesito establecer algunas variables ambientales como esta:

DEBUSSY 1 FSDB 1 

1 es un número, no una cadena. Además, ¿cómo puedo leer el valor almacenado en una variable de entorno? (Como DEBUSSY / FSDB en otro script secundario de Python).

Trate de usar el módulo 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']) 

Ver los documentos de Python en os.environ . Además, para generar procesos secundarios, consulte los documentos de subproceso de Python.

Lo primero es lo primero 🙂 leer libros es un excelente enfoque para resolver problemas; Es la diferencia entre las soluciones de curita y las inversiones a largo plazo para resolver problemas. Nunca pierdas la oportunidad de aprender. :RE

Puede elegir interpretar el 1 como un número, pero a las variables de entorno no les importa. Solo pasan cuerdas:

  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. 

(Desde environ(3posix) .)

Puede acceder a las variables de entorno en python utilizando el objeto os.environ diccionario 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/' 

Si desea pasar variables globales a nuevos scripts, puede crear un archivo de Python que solo esté destinado a contener variables globales (por ejemplo, globals.py). Cuando importe este archivo en la parte superior de la secuencia de comandos secundaria, debería tener acceso a todas esas variables.

Si estás escribiendo a estas variables, entonces esa es una historia diferente. Eso implica la concurrencia y el locking de las variables, que no voy a entrar a menos que usted quiera.

Utilice os.environ[str(DEBUSSY)] para leer y escribir ( http://docs.python.org/library/os.html#os.environ ).

En cuanto a la lectura, tienes que analizar el número de la cadena, por supuesto.