2011-01-04 7 views
10

क्या विकल्प अनिवार्य रूप से एक विकल्प बनाना संभव है?क्या विकल्प अनिवार्य रूप से एक विकल्प बनाना संभव है?

+0

हां, यह संभव है। इस प्रश्न का उत्तर यहां देखें (http://stackoverflow.com/questions/4407539/) – user225312

+3

हां, लेकिन आपको ऐसा नहीं करना चाहिए, क्योंकि यह कमांड लाइन इंटरफ़ेस के सम्मेलन और मानक के खिलाफ है। एक कारण है, विकल्पों को अनिवार्य क्यों नहीं बनाया जा सकता है। 'Optparse' दस्तावेज़ पढ़ें, यह स्पष्ट रूप से कहा गया है। – gruszczy

+4

ठीक है, तो क्यों 'argparse' आवश्यक विकल्पों के लिए अनुमति देता है? उद्धरण के लिए, 'argparse' दस्तावेज़:' Optparse इन सुविधाओं का समर्थन करने से इंकार कर देता है, व्यावहारिकता पर शुद्धता पसंद करते हैं। ' – user225312

उत्तर

20

मैं एक टिप्पणी पहले तैनात है, लेकिन यह देखते हुए कि कई अन्य उत्तर कहना No, not possible, यहाँ इसे कैसे करना है:

parser = OptionParser(usage='usage: %prog [options] arguments') 
parser.add_option('-f', '--file', 
         dest='filename', 
         help='foo help') 
(options, args) = parser.parse_args() 
if options.filename is None: # if filename is not given 
    parser.error('Filename not given') 

यह -f के रूप में अनिवार्य बनाता है।

argparse का उपयोग करना वास्तव में एक विकल्प है, लेकिन इसका मतलब यह नहीं है कि आप इसे optparse में भी नहीं कर सकते हैं।

+2

ठीक है, मेरा यही मतलब है (- ऑप्टपरसे इसे किसी भी तरह की डिफ़ॉल्ट पर सेट करें और किसी के लिए जांच न करें), मुझे लगता है कि एक उदाहरण प्रदान करना चाहिए था। धन्यवाद। बीटीडब्ल्यू, यह optparse द्वारा नहीं किया जाता है, आप प्रोग्राम में विकल्प के मूल्य की जांच करके कर रहे हैं। –

+1

दरअसल, 'ऑप्टपरसे' की कोई भूमिका नहीं है, यह एक विकल्प बनाने का एक तरीका है। – user225312

8

विकल्प पराजय वैकल्पिक द्वारा है :-) यदि आपको कुछ अनिवार्य बनाने की आवश्यकता है, तो argparse का उपयोग करें और एक स्थितित्मक तर्क निर्धारित करें।

http://docs.python.org/dev/library/argparse.html

+1

धन्यवाद हालांकि मुझे इसे पीई 2.6 के तहत काम करने की आवश्यकता है। – Alex

+0

आप अलग से Argparse स्थापित कर सकते हैं। http://code.google.com/p/argparse/ फिर, जब आप पायथन को अपग्रेड करते हैं, तो आप दर्द रहित तरीके से माइग्रेट कर सकते हैं। – gruszczy

2

नहीं, आप नहीं कर सकते हैं। या तो आप argparse का उपयोग कर सकते हैं और आपको ऑप्टपर मॉड्यूल का उपयोग करने से विकल्प मान मिलता है और स्पष्ट रूप से जांचता है कि क्या विकल्प निर्धारित किया गया है (जैसे ऑप्टपर में इसे किसी भी डिफ़ॉल्ट रूप से सेट करें और किसी के लिए जांच न करें) और यदि यह परिभाषित नहीं किया गया है, उपयोगकर्ताओं को यह विकल्प प्रदान करने के लिए कह रहे हैं sys.exit() पर कॉल करें।

+2

यह संभव है। – user225312