Nie mogę zrozumieć tego zachowania argpara z dokumentacji:

import argparse

parser.add_argument("--host", metavar="", dest="host", nargs=1, default="localhost", help="Name of host for database.  Default is 'localhost'.")
args = parser.parse_args()
print(args)

Oto wyjście z argumentem dla "--host":

>> python demo.py
Namespace(host='localhost')

>> python demo.py --host host
Namespace(host=['host'])

W szczególności: dlaczego argument "--host" jest przechowywany na liście, gdy jest określony, ale nie, gdy używany jest domyślny?

16
Schemer 17 sierpień 2014, 00:51

2 odpowiedzi

Najlepsza odpowiedź

Usuń argument słów kluczowych "Nargs". Po zdefiniowaniu tego argumentu Argparse zakłada argument jest listą (Nargs = 1 oznacza listę z 1 elementem)

22
Joohwan 14 marzec 2020, 05:00

Jako alternatywny i przydatny moduł: Docopt może być używany do analizowania argumentów linii poleceń. Docopt przekształcić linię poleceń w słownicę, definiując wartości wewnątrz doc .

1
c24b 6 listopad 2017, 10:03