web-dev-qa-db-fra.com

Imprimer les arguments de la ligne de commande avec argparse?

J'utilise argparse pour analyser les arguments de la ligne de commande.

Pour faciliter le débogage, je voudrais print une ligne avec les arguments qui avec le script Python a été appelé. Existe-t-il un moyen simple de le faire dans argparse?

25
becko

ArgumentParser.parse_args par défaut prend simplement les arguments de sys.argv . Donc, si vous ne changez pas ce comportement (en passant quelque chose d'autre à parse_args), vous pouvez simplement imprimer sys.argv pour obtenir tous les arguments passés au script Python:

import sys
print(sys.argv)

Alternativement, vous pouvez également simplement imprimer l'espace de noms que parse_args résultats; de cette façon, vous obtenez toutes les valeurs dans la façon dont l'analyseur d'arguments les a interprétées:

args = parser.parse_args()
print(args)
23
poke

Si vous exécutez argparse dans un autre python, comme lorsque vous le testez à l'intérieur - nittest , puis l'impression sys.argv affichera uniquement les arguments du script principal, par exemple:

['C:\Eclipse\plugins\org.python.pydev_5.9.2.201708151115\pysrc\runfiles.py', 'C:\Eclipse_workspace\test_file_search.py', '--port', '58454', '- - verbosité ',' 0 ']

Dans ce cas, vous devez utiliser vars pour parcourir les arguments argparse:

parser = argparse.ArgumentParser(...
...
args = parser.parse_args()
for arg in vars(args):
    print arg, getattr(args, arg)

Merci à: https://stackoverflow.com/a/27181165/658497

12
Noam Manos