सवाल Optparse के बजाय argparse का उपयोग क्यों करें?


मैंने देखा कि पायथन 2.7 दस्तावेज में अभी तक एक और कमांड लाइन पार्सिंग मॉड्यूल शामिल है। के अतिरिक्त getopt तथा optparse अब हमारे पास है argparse

अभी तक एक और कमांड लाइन पार्सिंग मॉड्यूल क्यों बनाया गया है? इसके बजाय मुझे इसका उपयोग क्यों करना चाहिए optparse? क्या ऐसी नई विशेषताएं हैं जिन्हें मुझे पता होना चाहिए?


247
2017-07-10 03:16


मूल


या शायद किसी का भी उपयोग नहीं करें क्योंकि 2012 से पाइथन के पास एक आसान, शक्तिशाली और वास्तव में है ठंडा तर्क पार्सिंग के लिए मॉड्यूल जिसे डॉकॉप कहा जाता है। docopt.org - ndemou
ऑप्टिकल के चारों ओर रैपर पर क्लिक करने का प्रयास करें। - Amit Tripathi


जवाब:


अजगर के रूप में 2.7, optparse बहिष्कृत है, और उम्मीद है कि भविष्य में दूर चलेगा।

argparse अपने मूल पृष्ठ पर सूचीबद्ध सभी कारणों के लिए बेहतर है (https://code.google.com/archive/p/argparse/):

  • स्थितित्मक तर्कों को संभालना
  • सहायक उप-आदेश
  • वैकल्पिक विकल्प उपसर्ग की अनुमति देता है + तथा /
  • शून्य-या-अधिक और एक-या-अधिक शैली तर्कों को संभालना
  • अधिक जानकारीपूर्ण उपयोग संदेश का उत्पादन
  • कस्टम प्रकारों और कार्यों के लिए एक बहुत ही सरल इंटरफ़ेस प्रदान करना

अधिक जानकारी भी है पीईपी 38 9, जो वाहन है जिसके द्वारा argparse इसे मानक पुस्तकालय में बनाया गया।


272
2017-07-10 03:22



कस्टम प्रकारों के लिए एक बहुत ही सरल इंटरफ़ेस ... लेकिन समग्र रूप से एक अधिक जटिल इंटरफ़ेस। मैं वास्तव में आश्चर्य करता हूं कि क्यों मैंने ऑप्टरसे को स्विच किया, क्योंकि ड्रम रोल Getopt होगा रहना। हाँ, उस डायनासोर के लिए कोई बहिष्कार नहीं। Sheeesh। - Jürgen A. Erhard
"शुद्धता" का उल्लेख optparse पीईपी में बाद में तर्कों के बारे में तर्क यह है कि इसे जोड़ने के लिए कितना जटिल है इसे ध्वनि बनाता है जैसे इसे चट्टान (खराब) के रूप में लचीला माना जाता है। - Nick T
उपमहाद्वीप इंटरफ़ेस खराब है। डिफ़ॉल्ट आउटपुट उपयोगी नहीं है और इसे बदलना मुश्किल है। - anatoly techtonik
ध्यान दें कि code.google.com कुछ दिनों में रखरखाव पर जाएगा। अधिक जानकारी के साथ अंतर यहां उपलब्ध हैं: argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html - Jean-Francois T.


इसके बजाय मुझे इसका उपयोग क्यों करना चाहिए   optparse? क्या उनकी नई विशेषताएं हैं I   के बारे में पता होना चाहिए?

@ निकोलस के जवाब में यह अच्छी तरह से शामिल है, मुझे लगता है, लेकिन जितना अधिक "मेटा" प्रश्न आप शुरू करते हैं:

अभी तक एक और कमांड लाइन क्यों है   पार्सिंग मॉड्यूल बनाया गया है?

मानक दुविधा में कोई भी उपयोगी मॉड्यूल जोड़ा जाने पर यह दुविधा संख्या एक है: जब आप काफी बेहतर होते हैं, लेकिन पिछड़ा-असंगत, वही कार्यक्षमता प्रदान करने का तरीका उभरता है तो आप क्या करते हैं?

या तो आप पुराने और स्वीकार्य रूप से पार हो गए तरीके से चिपके रहते हैं (आमतौर पर जब हम जटिल पैकेजों के बारे में बात कर रहे हैं: एसिंककोर बनाम टिस्ड, टिंकर बनाम डब्ल्यूएक्स या क्यूटी, ...) या आप एक ही काम करने के लिए कई असंगत तरीकों से समाप्त होते हैं (एक्सएमएल पार्सर्स, आईएमएचओ, कमांड लाइन पार्सर्स की तुलना में इसका एक बेहतर उदाहरण हैं - लेकिन email पैकेज इसी तरह के मुद्दों से निपटने के असंख्य पुराने तरीके बनाम बहुत दूर नहीं है ;-)।

आप "बहिष्कृत" होने के पुराने तरीकों के बारे में दस्तावेज़ों में धमकी दे सकते हैं, लेकिन (जब तक आपको पिछड़ा संगतता रखने की आवश्यकता हो) आप बड़े, महत्वपूर्ण अनुप्रयोगों को नए पायथन रिलीज में जाने से रोकने के बिना वास्तव में उन्हें दूर नहीं ले जा सकते हैं।

(दुविधा संख्या दो, सीधे आपके प्रश्न से संबंधित नहीं है, पुरानी कहानियों में सारांशित है "मानक पुस्तकालय वह जगह है जहां अच्छे पैकेज मर जाते हैं" ... हर साल डेढ़ या उससे अधिक रिलीज के साथ, पैकेज जो बहुत नहीं हैं, बहुत स्थिर, नहीं उससे अधिक बार रिलीज़ करने की आवश्यकता है, वास्तव में मानक पुस्तकालय में "जमे हुए" होने से काफी हद तक पीड़ित हो सकता है ... लेकिन, यह वास्तव में एक अलग मुद्दा है)।


59
2017-07-10 05:10



माना जाता है कि आप 2.7 से पहले पायथन इंस्टॉलेशन के लिए argparse.py शामिल कर सकते हैं और पीछे-असंगत परिवर्तनों के बारे में चिंता न करें। ट्रैक करने के लिए अतिरिक्त चीज़, लेकिन यह अभी भी argparse.googlecode.com पर मानक पुस्तकालय के बाहर बनाए रखा है - Ehtesh Choudhury
Argparse केवल कुछ (आला?) उपयोगों के लिए काफी बेहतर है। यह पूर्ण शब्दों में वास्तव में बेहतर नहीं है, यह है विभिन्न। यह चीजों को विकल्प नहीं कर सकता है, लेकिन यह भी प्रतिक्रिया है। एक उदाहरण मैंने अभी भाग लिया: ऑप्टिपरसे डिफ़ॉल्ट रूप से "-" को संभाला जाता है (सुनिश्चित नहीं है कि यह ऐसा करने के लिए किया जाता है) जबकि Argparse इसके बारे में कुछ नहीं जानता है। - Jürgen A. Erhard


पाइथन अतिरिक्त के लिए तर्क के लिए सबसे अच्छा स्रोत इसकी पीईपी होगी: पीईपी 38 9: Argparse - नई कमांड लाइन पार्सिंग मॉड्यूल, विशेष रूप से, खंड हकदार है, क्यों नहीं मिल रहा है और पर्याप्त विकल्प?


34
2017-07-10 03:20





ब्लॉक पर नए बच्चे भी हैं!

  • पहले से उल्लिखित बहिष्कृत के अलावा optparse। [प्रयोग नहीं करें]
  • argparse इसका भी उल्लेख किया गया था, जो बाहरी libs को शामिल करने के इच्छुक लोगों के लिए एक समाधान है।
  • docopt एक बाहरी lib लायक है जो आपके इनपुट के लिए पार्सर के रूप में एक प्रलेखन स्ट्रिंग का उपयोग करता है।
  • क्लिक बाहरी lib भी है और तर्क परिभाषित करने के लिए सजावटी का उपयोग करता है। (मेरा स्रोत अनुशंसा करता है: क्यों क्लिक करें)

यदि आपको गहराई से तुलना करने की आवश्यकता है तो कृपया पढ़ें इस और आप का उपयोग कर समाप्त हो सकता है docopt या क्लिक। केली पर्डन के लिए धन्यवाद!


12
2018-03-09 22:00



जबकि यह एक सार्थक टिप्पणी है, यह अभी भी एक उत्तर से अधिक टिप्पणी है .. कोई डाउनवोट नहीं, लेकिन मेरे लिए कोई अपवित्र नहीं है! एक वास्तविक उत्तर में बनाने के लिए लेख के एक मूल्यवान सारांश के साथ अपने उत्तर का विस्तार करें !: meta.stackexchange.com/a/8259/172394 - Stefano
मैंने अपने लिंक का सारांश शामिल करने का प्रयास किया, मुझे आशा है कि अब यह एक अच्छा स्टैक ओवरफ्लो उत्तर के लायक है। - lony


सबसे पहले मैं @fmark के रूप में अनिच्छुक था जैसे ऑप्टपरसे से Argparse में स्विच करने के लिए, क्योंकि:

  1. मैंने सोचा कि अंतर इतना बड़ा नहीं था।
  2. काफी कुछ वीपीएस अभी भी डिफ़ॉल्ट रूप से पायथन 2.6 प्रदान करता है।

तब मैंने इस दस्तावेज़ को देखा, Argparse ऑप्टपरसेफ बेहतर प्रदर्शन करता है, खासकर जब सार्थक सहायता संदेश उत्पन्न करने के बारे में बात करते हैं: http://argparse.googlecode.com/svn/trunk/doc/argparse-vs-optparse.html

और फिर मैंने देखा "Argparse बनाम optparse"@ निकोलस द्वारा, कह रहे हैं कि हम पाइथन <2.7 में उपलब्ध तर्क प्राप्त कर सकते हैं (हाँ, मुझे पहले यह नहीं पता था।)

अब मेरी दो चिंताओं को अच्छी तरह संबोधित किया गया है। मैंने यह आशा व्यक्त की कि यह समान मानसिकता वाले लोगों की मदद करेगा।


4
2018-04-06 05:59