Duplicate possible:
Comment définir des variables d'environnement en Python
Mon script python qui appelle de nombreuses fonctions python et scripts Shell. Je souhaite définir une variable d'environnement dans Python (fonction d'appel principale) et dans tous les processus filles, y compris les scripts Shell, pour afficher l'ensemble des variables d'environnement.
Je dois définir certaines variables environnementales comme ceci:
DEBUSSY 1
FSDB 1
1
est un nombre, pas une chaîne. De plus, comment puis-je lire la valeur stockée dans une variable d'environnement? (Comme DEBUSSY
/FSDB
dans un autre script enfant python.)
Essayez d’utiliser le module 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'])
Voir le Python docs sur os.environ
. De plus, pour générer des processus enfants, consultez la documentation sous-processus docs de Python.
La première chose à faire en premier :) la lecture de livres est une excellente approche de la résolution de problèmes; c'est la différence entre les solutions de secours et les investissements à long terme dans la résolution des problèmes. Ne manquez jamais une occasion d'apprendre. :RÉ
Vous pouvez choisir pour interpréter le 1
comme un nombre, mais les variables d'environnement ne sont pas gênantes. Ils ne font que passer des cordes:
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.
(De environ(3posix)
.)
Vous accédez aux variables d’environnement dans python à l’aide de os.environ
objet de type dictionnaire :
>>> 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 vous souhaitez passer des variables globales dans de nouveaux scripts, vous pouvez créer un fichier python uniquement destiné à contenir des variables globales (par exemple, globals.py). Lorsque vous importez ce fichier en haut du script enfant, il doit avoir accès à toutes ces variables.
Si vous écrivez à ces variables, alors c'est une autre histoire. Cela implique la concurrence et le verrouillage des variables, ce que je ne vais pas aborder à moins que vous ne le souhaitiez.
Utilisez os.environ[str(DEBUSSY)]
pour la lecture et l’écriture ( http://docs.python.org/library/os.html#os.environ ).
Pour ce qui est de la lecture, vous devez bien sûr analyser le numéro de la chaîne.