argparse
Dokumentacja jest dość dobre, ale pomija kilka przydatnych informacji, które mogą nie być oczywiste. (@Diego Navarro już o tym wspomniał, ale postaram się nieco rozwinąć jego odpowiedź). Podstawowe użycie jest następujące:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
Obiekt, z którego wracasz, parse_args()
to obiekt „Przestrzeń nazw”: Obiekt, którego zmienne składowe są nazwane na podstawie argumentów wiersza poleceń. Namespace
Celem jest jak masz dostęp do swoich argumentów i wartości związanych z nimi:
args = parser.parse_args()
print args.my_foo
print args.bar_value
(Zauważ, że argparse
zastępuje „-” w nazwach argumentów podkreśleniami podczas nazywania zmiennych).
W wielu sytuacjach możesz chcieć użyć argumentów po prostu jako flag, które nie przyjmują żadnej wartości. Możesz dodać te w argparse w następujący sposób:
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
Powyższe spowoduje utworzenie zmiennych o nazwach odpowiednio „foo” o wartości True i „no_foo” o wartości False:
if (args.foo):
print "foo is true"
if (args.no_foo is False):
print "nofoo is false"
Pamiętaj również, że możesz dodać opcję „wymagane” podczas dodawania argumentu:
parser.add_argument('-o', '--output', required=True)
W ten sposób, jeśli pominiesz ten argument w wierszu poleceń argparse
, powie ci, że go brakuje i zatrzymasz wykonywanie skryptu.
Na koniec zauważ, że możliwe jest stworzenie struktury dyktowania twoich argumentów za pomocą vars
funkcji, jeśli to ułatwi ci życie.
args = parser.parse_args()
argsdict = vars(args)
print argsdict['my_foo']
print argsdict['bar_value']
Jak widać, vars
zwraca dykton z nazwami argumentów jako kluczami i ich wartościami jako, er, wartości.
Istnieje wiele innych opcji i rzeczy, które możesz zrobić, ale powinno to obejmować najważniejsze, najczęstsze scenariusze użycia.
sys.argv
argument, który chcesz ...