2011-05-11 13 views
87

posible duplicado:
How to set environmental variables in PythonAjuste/lectura de variables de entorno

Mi script en Python que exige muchas funciones Python y scripts de shell. Quiero establecer una variable de entorno en Python (función de llamada principal) y todos los procesos hijas, incluidos los scripts de shell para ver la variable de entorno establecida.

tengo que configurar algunas variables ambientales como esto:

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 otra secuencia de comandos hija python).

+11

¿Qué pasa con la cosa "DEBUSSY"? Estaba en el hilo duplicado también. Google solo trae información sobre un chico francés. – voithos

+13

@voithos ¡Qué vergüenza! –

+0

@David ¿Qué ...? De acuerdo, entonces mi comentario "francés" no tenía sentido, sí, pero aún me pregunto qué es esta cosa DEBUSSY. – voithos

Respuesta

179

Pruebe 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']) 

Véase el Python docs en os.environ. Además, para engendrar procesos secundarios, vea Python's subprocess docs.

29

Lo primero es lo primero :) leer libros es un excelente enfoque a la resolución de problemas; es la diferencia entre las soluciones de parche e inversiones a largo plazo para resolver problemas. Nunca pierdas la oportunidad de aprender. : D

Puede elegir para interpretar el 1 como un número, pero a las variables de entorno no les importa. Ellos sólo pasan alrededor de cadenas: (. Desde environ(3posix))

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. 

You variables de entorno de acceso en Python usando el os.environ dictionary-like object:

>>> 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/' 
+0

Estoy de acuerdo con usted. Solo que tengo menos tiempo para arreglar estos guiones y leer el libro lleva una semana. Voy a leer el libro de Python para obtener un buen conocimiento de la programación en Python – user749632

3

Si desea pasar variables globales en nuevos guiones, puede crear un archivo python que solo esté destinado a contener variables globales (por ejemplo, globals.py). Cuando importe este archivo en la parte superior del script secundario, debería tener acceso a todas esas variables.

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

Cuestiones relacionadas