2012-11-09 11 views
6

मैं एक स्क्रिप्ट (उदाहरण के लिए) है कि चाहते हैं तीन तर्कों:मैं केवल एक तर्क स्वीकार करने के लिए अपनी पायथन लिपि को कैसे रोकूं? (Argparse)

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("--a",help="Argument a") 
parser.add_argument("--b",help="Argument b") 
parser.add_argument("--c",help="Argument c") 
args= parser.parse_args() 

लेकिन इतना है कि यह केवल या तो 'एक' निर्दिष्ट करने के लिए ही संभव है यह कर, 'बी', या 'ग 'किसी भी समय पर उदाहरण के लिए आप 'ए' निर्दिष्ट कर सकते हैं लेकिन 'बी' या 'सी' नहीं यह संभव है और मैं इसे कैसे प्राप्त करूं?

उत्तर

10

argpase आपको add_mutually_exclusive_group() विधि का उपयोग करके इसे निर्दिष्ट करने देता है।

import argparse 
parser = argparse.ArgumentParser() 
g = parser.add_mutually_exclusive_group() 
g.add_argument("--a",help="Argument a") 
g.add_argument("--b",help="Argument b") 
g.add_argument("--c",help="Argument c") 
args= parser.parse_args() 
+0

धन्यवाद। मुझे इसकी ही खोज थी। – Sheldon

+1

@Alfe - उस संपादन के लिए धन्यवाद! – bgporter

1

पहले से ही argparse स्तर पर इस जांच करने के लिए add_mutually_exclusive_group() ऊपर उल्लेख किया है का उपयोग करें।

आपको त्रुटि संदेश और पसंद के बारे में अधिक नियंत्रण प्राप्त करना है, तो आप निश्चित रूप से परिणामों की जांच कर सकते हैं बाद में:

if len([x for x in args.a, args.b, args.c if x is not None]) > 1: 
    raise Exception("Not allowed!") 
संबंधित मुद्दे