2012-12-28 17 views
16

मैं argparse विकल्पों के मानों को कैसे प्रतिबंधित करूं?कमांड लाइन विकल्पों के मूल्यों को प्रतिबंधित करना

नीचे कोड sau विकल्प केवल 0 या 1 और bg की एक संख्या को स्वीकार करना चाहिए केवल एक पूर्णांक के लिए अनुमति चाहिए में

। मैं इसे कैसे कार्यान्वित कर सकता हूं?

import os 
import sys, getopt 
import argparse 

def main(): 
    parser = argparse.ArgumentParser(description='Test script') 
    parser.add_argument('-sau','--set',action='store',dest='set',help='<Required> Set flag',required=True) 
    parser.add_argument('-bg','--base_g',action='store',dest='base_g',help='<Required> Base g',required=True) 
    results = parser.parse_args() # collect cmd line args 
    set = results.set 
    base_g = results.base_g 

if __name__ == '__main__': 
    main() 
+1

builtin मुखौटा नहीं है: 'सेट = results.set' (आप सिंटैक्स हाइलाइटिंग रंग देखें) – eumiro

+0

इसके अलावा, एक sidenote पर, अगर तर्क आवश्यक हैं, तो वे झंडे नहीं बल्कि स्थितित्मक तर्क होना चाहिए। –

+0

इस ट्यूटोरियल की जांच करें http://docs.python.org/howto/argparse – Tshepang

उत्तर

17

आप add_argument की type और choices तर्कों का उपयोग कर सकते हैं। केवल स्वीकार करने के लिए '0' और '1', क्या तुम चाहते हैं:

parser.add_argument(…, choices=set("01")) 

और केवल पूर्णांक संख्या स्वीकार करने के लिए, तुम क्या चाहते हैं:

parser.add_argument(…, type=int) 

ध्यान दें कि विकल्पों में, आप करेंगे टाइप-तर्क के रूप में निर्दिष्ट प्रकार में विकल्प देना होगा। तो पूर्णांकों के लिए जाँच करने के लिए और केवल 0 और 1 अनुमति देते हैं, तुम क्या चाहते हैं:

parser.add_argument(…, type=int, choices=set((0,1))) 

उदाहरण:

>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> _ = parser.add_argument("-p", type=int, choices=set((0, 1))) 
>>> parser.parse_args(["-p", "0"]) 
Namespace(p=0) 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^