2017-05-16 1 views
2

Comment passez-vous une chaîne comme un argument dans python sans la sortie contenant "Namespace".Comment passer une chaîne comme un argument dans python sans "namespace"

Voici mon code:

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("person", help="person to test",type=str) 
person = str(parser.parse_args()) 
print "The person's name is " + person 

Voici la commande que je suis en cours d'exécution:

python test.py bob 

Ceci est ma sortie:

The person's name is Namespace(person='bob') 

Je pourrais probablement faire une division de fantaisie , mais je suis sûr que je mets juste l'argparse incorrectement (je suis nouveau à Python) si quelqu'un peut s'il vous plaît me dire comment bien pa Il y a une chaîne comme celle-ci, je l'apprécierais beaucoup.

+0

Pourquoi ne pas utiliser 'sys.argv [1]' à la place? – DyZ

+3

Peut-être passer par le premier petit peu du [tutoriel argparse] (https://docs.python.org/2/howto/argparse.html) – nbryans

+0

Il ya une bibliothèque génial pour ce clic appelé, consultez-le http://click.pocoo.org/5/ – olofom

Répondre

5

L'espace de noms est un conteneur pour les résultats de l'analyse des arguments. Vous pouvez accéder aux valeurs des arguments individuels en les regardant dans l'espace de noms:

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("person", help="person to test",type=str) 
args = parser.parse_args() 
print "The person's name is " + args.person 

Le docs ont quelques grands exemples qui montrent comment utiliser argparse.

+0

Merci! Cela a fonctionné comme un charme, et votre explication est parfaitement logique –