के साथ एक तर्क के रूप में एक शब्दकोश को स्वीकार करना मैं argparse के साथ प्रकार = dict के तर्क को स्वीकार करने की कोशिश कर रहा हूं लेकिन इनपुट से कोई फर्क नहीं पड़ता कि यह अमान्य dict value मान की त्रुटि देता है।Argparse और Python
#!/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
यही होता है जब मैं कोशिश करते हैं और स्क्रिप्ट
./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
"किसी भी वस्तु का समर्थन करता है कि ऑपरेटर में विकल्प मान के रूप में पारित किया जा सकता है, तो dict वस्तुओं, सेट वस्तुओं, कस्टम कंटेनर, आदि सभी समर्थित हैं।"
लिए :) लाइन आप बोली से प्रलेखन से संबंधित है की जरूरत है "विकल्प" कीवर्ड तर्क, जो परिभाषित करता है कि तर्कों के मूल्यों की अनुमति है। पसंद के लिए एक नियम पास करना चाबियों की एक सूची को पारित करने के लिए प्रभावी रूप से बराबर है। इस प्रकार, "{'a': 2, 'b': 3} गुजरने से" आपके "--mydict" ध्वज "ए" या "बी" में अनुमत तर्कों को प्रतिबंधित कर दिया जाएगा। –