Próbuję zaakceptować argument type = dict z argparse, ale bez względu na dane wejściowe podaje błąd nieprawidłowej wartości dyktowanej.Akceptowanie słownika jako argumentu z argparse i pythonem
#!/usr/bin/env python
import argparse
MYDICT = {'key': 'value'}
parser = argparse.ArgumentParser()
parser.add_argument("-m", "--mydict", action="store",
required=False, type=dict,
default=MYDICT)
args = parser.parse_args()
print args.mydict
To co się dzieje, gdy próbuję i przekazać słownika do skryptu
./argp.py -m "{'key1': 'value1'}"
usage: argp.py [-h] [-m MYDICT]
argp.py: error: argument -m/--mydict: invalid dict value: "{'key1': 'value1'}"
patrząc na dokumenty to myślę, że byłoby to możliwe.
http://docs.python.org/dev/library/argparse.html
„Każdy obiekt, który obsługuje w operatora mogą być przekazywane jako wartość wyborów, tak DICT przedmiotów, obiektów, niestandardowe zestawy pojemników itp są obsługiwane.”
linii, którą cytat z dokumentacji dotyczy argument słowa kluczowego "wybory", który określa, jakie wartości argumentów są dozwolone. Przekazanie dyktatu do wyboru jest równoznaczne z przekazaniem listy kluczy. Dlatego przekazanie "{" a ": 2," b ": 3}" ograniczyłoby dozwolone argumenty do twojej flagi "--mydict" do "a" lub "b". –