2009-07-14 8 views
8

J'essaie d'exécuter une série de commandes à l'aide du module de sous-processus Pythons, mais j'ai besoin de définir les variables shell avec export avant de les exécuter. Bien sûr, le shell ne semble pas être persistant, donc quand je lance une commande, ces variables sont perdues.Python: Variables de shell persistantes dans le sous-processus

Y a-t-il un moyen de s'y prendre? Je pourrais créer un processus/bin/sh, mais comment puis-je obtenir les codes de sortie des commandes exécutées sous cela?

Répondre

13

subprocess.Popen prend un argument nommé optionnel env qui est un dictionnaire à utiliser comme environnement de sous-processus (ce que vous décrivez comme "variables shell"). Préparez une dict que vous avez besoin (vous pouvez commencer avec une copie de os.environ et modifiez cela comme vous avez besoin) et passez-le à tous les appels subprocess.Popen que vous effectuez.

+0

Parfait, merci. – PeterBelm

+0

@PeterBelm, de rien! –

5

Alex a absolument raison. Pour donner un exemple

current_env=environ.copy() 
current_env["XXX"] = "SOMETHING" #If you want to change some env variable 
subProcess.Popen("command_n_args", env=current_env) 
Questions connexes