2016-01-25 16 views
7

Używam argparse do analizowania argumentów wiersza poleceń.Drukować argumenty wiersza poleceń z argparse?

Aby pomóc w debugowaniu, chciałbym, aby print linia z argumentami, które ze skryptem Python został wywołany. Czy jest prosty sposób na zrobienie tego w ramach argparse?

Odpowiedz

11

ArgumentParser.parse_args domyślnie przyjmuje argumenty po prostu od sys.argv. Więc jeśli nie zmieni to zachowanie (przekazując w coś innego do parse_args), można po prostu wydrukować sys.argv uzyskać wszystkie argumenty przekazywane do skryptu Pythona:

import sys 
print(sys.argv) 

Alternatywnie, można również po prostu wydrukować nazw ten parse_args powraca; w ten sposób można uzyskać wszystkie wartości w sposób parser argumentem interpretować je:

args = parser.parse_args() 
print(args) 
3

Jeśli uruchomiony argparse wewnątrz innego skrypt Pythona, jak podczas testowania go wewnątrz unittest, a następnie drukowanie sys.argv będzie drukować tylko argumenty głównego skryptu, np:

[ 'C: \ eclipse \ plugins \ org.python.pydev_5.9.2.201708151115 \ pysrc \ runfiles.py', „C: \ eclipse_workspace \ test_file_sear ch.py”, '--port', '58454', '--verbosity', '0']

W tym przypadku należy użyć vars iteracyjne nad argparse args:

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

Dzięki: https://stackoverflow.com/a/27181165/658497

Powiązane problemy