Я пытаюсь принять аргумент типа = dict с помощью argparse, но независимо от ввода, он дает ошибку недействительного значения dict.
#!/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
Это то, что происходит, когда я пытаюсь передать словарь в script
./argp.py -m "{'key1': 'value1'}"
usage: argp.py [-h] [-m MYDICT]
argp.py: error: argument -m/--mydict: invalid dict value: "{'key1': 'value1'}"
Глядя на документы, я думаю, что это будет возможно.
http://docs.python.org/dev/library/argparse.html
"Любой объект, который поддерживает оператор in, может быть передан как значение выбора, поэтому все объекты dict, заданные объекты, пользовательские контейнеры и т.д. поддерживаются".