2013-02-19 20 views
8

मेरे पास एक निश्चित कॉन्फ़िगरेशन फ़ाइल है जो इसके प्लगइन पर कॉल करती है। उन प्लगइन पर तर्क पारित करना संभव है। यह कॉन्फ़िगरेशन फ़ाइल मुझे रनटाइम पर आर्बिटरी कमांड को कॉल करने देती है।डिफ़ॉल्ट तर्क को ओवरराइड करना- व्यवहार

प्लगइन्स कई तर्कों का उपयोग करते हैं: उनमें से एक -h है और यह --help के लिए खड़ा नहीं है। अब, मेरी समस्या यह है कि मैं अपनी खुद की पायथन लिपि को कॉल करना चाहता हूं और साथ ही इसे कुछ तर्क भी पास करना चाहता हूं। मैं argparse का उपयोग कर रहा हूं और बाकी कॉन्फ़िगरेशन के साथ संगत होना चाहता हूं, मैंने -h ध्वज बनाया है। मेरे आश्चर्य के लिए, Argparse बस मुझे अपने व्यवसाय को ध्यान में रखने के बजाय argparse.ArgumentError: argument -h/--help: conflicting option string(s): -h देता है।

क्या ऐसा होने से रोकने का कोई तरीका है?

मुझे अच्छी तरह से पता है कि अधिकांश लोग सहायता देने के लिए -h की उम्मीद करते हैं लेकिन यह मेरी अपनी स्क्रिप्ट है और मुझे लगता है कि मैं बेहतर जानता हूं कि मैं Argparse devs की तुलना में ध्वज का उपयोग करना चाहता हूं।

+0

आप वास्तव में Argparse devs से बेहतर जानते हैं, यही कारण है कि आपको यह कहना है कि आप क्या कह रहे हैं और न केवल अपने दिमाग को सही तरीके से अनुमान लगाने के लिए विश्वास करें। डिफ़ॉल्ट '-h --help' समझ में आता है क्योंकि यह बहुत आम है। जब आप गलती से सामान्य डिफ़ॉल्ट उम्मीद के साथ संघर्ष शुरू करते हैं तो आपको बताते हुए एक अच्छी बात है। आपको बस इतना करना है कि तर्क दें कि आप ऐसा करने का इरादा रखते हैं और सब ठीक है! – Ben

उत्तर

11

देखो। add_help नामक एक है, जो सही पर डिफ़ॉल्ट है।

parser = argparse.ArgumentParser('Cool', add_help=False) 
parser.add_argument('-h', '--hi', action='store_true', dest='hi') 

यह अपेक्षा के अनुसार काम करता है।

+2

डर्न, मैं '--help' रखना चाहता था, लेकिन' -h-' – ThorSummoner

+8

@ThorSummoner,' parser.add_argument ('- help', action = 'help', help = 'इस सहायता संदेश को दिखाएं और बाहर निकलें ')' add_help = गलत 'के अतिरिक्त। –

5

उस सामान को दबाने के लिए एक क्वारग है (docs)।
इस तरह अपने पार्सर बनाएँ:

ArgumentParser तर्क के लिए argparse documentation में
parser = argparse.ArgumentParser(prog='PROG', add_help=False) 
+0

बहुत बहुत धन्यवाद! मैं दूसरे उत्तर को शीर्ष के रूप में चिह्नित करूंगा क्योंकि यह पहले था और यह काफी समान है। मुझे इसे दस्तावेज़ों में याद किया होगा ... –

+3

असल में, मेरा पहला था, लेकिन कभी नहीं: पी – wim

+0

ओह, आप वास्तव में सही हो सकते हैं। गहरी माफी - लंबी रात। –

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

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