variables Bash ne sont pas des variables d'environnement. Vous obtenez à travers l'objet os.environ avec une interface de type dictionnaire. Notez qu'il existe deux types de variables dans Bash: celles qui sont locales au processus en cours et celles qui sont héritées par les processus enfants. Votre script Python est un processus enfant, vous devez donc vous assurer que vous avez la variable à laquelle le processus enfant doit accéder.
Pour répondre à votre question initiale, vous devez d'abord exporter la variable, puis y accéder à partir du script python à l'aide de os.environ
. Alternativement, vous pouvez passer la variable comme argument de ligne de commande, ce que fait votre code maintenant. Dans ce cas, vous devez regarder dans sys.argv
, qui est la liste des arguments passés à votre script. Ils apparaissent dans sys.argv
dans le même ordre que vous les avez spécifié lors de l'appel du script. sys.argv[0]
contient toujours le nom du programme en cours d'exécution. Les entrées suivantes contiennent d'autres arguments. len(sys.argv)
indique le nombre d'arguments reçus par le script.
#!/bin/python
import sys
import os
if len(sys.argv) < 2:
print 'Usage: ' + sys.argv[0] + ' <filename>'
sys.exit(1)
print 'This is the name of the python script: ' + sys.argv[0]
print 'This is the 1st argument: ' + sys.argv[1]
f=open('/home/xxx/scratch/test/' + sys.argv[1],'r').readlines()
print f[1]
Quelle partie du module 'argparse' vous rend confus? http://docs.python.org/dev/library/argparse.html. Il est utile de poser des questions plus spécifiques sur le problème que vous rencontrez avec votre code. Veuillez poster du code, en utilisant 'argparse' et poser des questions spécifiques. –
Passez-le en tant que paramètre de ligne de commande, puis retirez-le de sys.argv. – GreenMatt