आप वास्तव में argparse
साथ ऐसा नहीं कर सकता है, लेकिन आप यह कर सकते के बाद argparse
समाप्त हो गया है।
parser = argparse.ArgumentParser()
# group 1
parser.add_argument("-q", "--query", help="query", required=False)
parser.add_argument("-f", "--fields", help="field names", required=False)
# group 2
parser.add_argument("-a", "--aggregation", help="aggregation",
required=False)
मैं यहाँ एक MongoDB क्वेरी करने के लिए एक कमांड लाइन आवरण के लिए दिए गए विकल्पों का उपयोग कर रहा:
यहाँ एक उदाहरण है। collection
उदाहरण वैकल्पिक तर्क query
और और fields
के साथ विधि aggregate
या विधि find
विधि को कॉल कर सकता है, इसलिए आप देखते हैं कि पहले दो तर्क संगत क्यों हैं और अंतिम नहीं है।
तो अब मैं parser.parse_args()
चलाने के लिए और जाँच यह सामग्री है:
args = parser().parse_args()
print args.aggregation
if args.aggregation and (args.query or args.fields):
print "-a and -q|-f are mutually exclusive ..."
sys.exit(2)
बेशक
, इस छोटे से हैक केवल साधारण मामलों के लिए काम कर रहा है और यह सब संभव विकल्पों की जांच करने के लिए आप कई परस्पर अगर एक बुरा सपना बन जाएगा विशेष विकल्प और समूह। उस स्थिति में आपको कमांड समूहों में अपने विकल्प तोड़ना चाहिए। इसके लिए, आपको Python argparse mutual exclusive group पर सुझाव का पालन करना चाहिए।
क्या आप बस अगर किसी के साथ Argparse के बाद जांच कर रहे थे? – erikbwork
मैं कर सकता था, Argparse के बारे में अच्छी बात यह है कि यह आपके लिए त्रुटि संदेश संभालती है। –
हालांकि मैं परस्पर अनन्य समूह में 'add_argument_group' का उपयोग करके विकल्पों का एक सामान्य समूह जोड़ सकता हूं, लेकिन यह बिल्कुल काम नहीं करता है (यह बिल्कुल परस्पर अनन्य समूह नहीं है)। शायद आपके पास बेहतर विकल्प है जो एक कस्टम एक्शन लिखना है जो इस तरह के तर्क को लागू करता है। यह करना बहुत मुश्किल होना चाहिए। – Bakuriu