मैं यहां और सामान्य रूप से सबपरर्स उदाहरणों के आवंटन के माध्यम से खोज कर रहा हूं लेकिन यह प्रतीत होता है कि यह सरल बात नहीं है।argparse subparsers का सही तरीके से उपयोग कैसे करें?
मेरे पास दो अलग-अलग प्रकार हैं जिनमें से किसी को बाधाएं हैं इसलिए सोचा गया कि सबपरसर जाने का तरीका था। जैसे या तो "ए" या "बी" के लिए अनुमति देता है। यदि उपयोगकर्ता "ए" पास करता है तो उन्हें यह भी निर्दिष्ट करना होगा कि यह "ए 1" या "ए 2" है या नहीं। अगर वे सिर्फ "बी" पास करते हैं तो कुछ भी नहीं।
क्या मैं यह कर सकता हूं और मुझे तर्क दे सकता है कि किस प्रकार का "ए" पारित किया गया था या यदि यह सिर्फ "बी" था?
नीचे काम करता प्रतीत होता है लेकिन कुछ कारणों से उप-वर्ग के बाद कुछ भी पारित होने पर टूट जाता है।
उदा। एक linux टर्मिनल से
>> python test01.py -t A a1 -v 61
साथ त्रुटियों ...
usage: test01.py a1 [-h]
test01.py a1: error: unrecognized arguments: -v
उम्मीद है कि है कि समझ में आता है।
कोड:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='types of A')
parser.add_argument("-t",
choices = ["A", "B"],
dest = "type",
required=True,
action='store',
help="Some help blah blah")
cam_parser = subparsers.add_parser('a1', help='Default')
cam_parser.set_defaults(which='a1')
cam_parser = subparsers.add_parser('a2', help='parse this instead of default')
cam_parser.set_defaults(which='a2')
parser.add_argument("-v",
nargs = '+',
required=True,
dest = "version",
type=int,
action='store',
help="some version help blah blah")
argument = parser.parse_args()
print argument.type
print argument.version
बहुत बहुत धन्यवाद। हालांकि मुझे अभी भी एक त्रुटि हो रही थी जब मैंने कुछ कारणों से पास किया- यानी यह उम्मीद की गई- और जब मैंने इसे पास किया तो मुझे अपनी पुरानी त्रुटि "अपरिचित तर्क" मिली। भले ही मैंने इसे स्थितित्मक तर्क से पहले पारित किया हो। कोई विचार? मैं एक समान उदाहरण खोजने की कोशिश कर रहा हूं लेकिन मुझे बहुत भाग्य नहीं मिला है। – user1571144
तर्क से पहले है जो निर्दिष्ट करता है कि कौन सा सबपरसर उपयोगकर्ता के कोड में तर्क दर्ज कर रहा है या दोनों? – Nickpick
यह 'group1 = parser.add_subparsers (help =' subparser group 1 ')' और 'group2 = parser.add_subparsers (help = 'subparser group 2') निष्पादित करता है 'त्रुटि' देता है: एकाधिक उप-कर्सर तर्क 'त्रुटि नहीं हो सकती है। मैं समूह उपसमूहों के लिए इसका उपयोग करने की उम्मीद कर रहा था। –