2013-12-15 8 views
16

के बीच अंतर मुझे एक कमांड लाइन इंटरफ़ेस लिखना है और मैंने देखा है कि मैं docopt और argparse का उपयोग कर सकता हूं।पायथन - डॉकोपेट और Argparse

मैं जानना चाहता हूं कि दोनों के बीच मुख्य अंतर क्या है ताकि मैं एक प्रबुद्ध विकल्प बना सकूं।

कृपया तथ्यों के साथ चिपके रहें। मुझे वाह नहीं चाहिए। docopt। बहुत खूबसूरत। बहुत उपयोगी।

+3

'argparse' डिफ़ॉल्ट पायथन पैकेज में है जबकि 'docopt' एक अलग मॉड्यूल है। –

उत्तर

10

डॉकोपेट एक डॉक्टर स्ट्रिंग को पार करता है, जबकि Argparse ऑब्जेक्ट इंस्टेंस बनाकर और फ़ंक्शन कॉल द्वारा व्यवहार जोड़ने के द्वारा अपने पार्सिंग का निर्माण करता है। argparse के लिए

उदाहरण: docopt के लिए

parser = argparse.ArgumentParser() 
parser.add_argument("operation", help="mathematical operation that will be performed", 
    choices=['add', 'subtract', 'multiply', 'divide']) 
parser.add_argument("num1", help="the first number", type=int) 
parser.add_argument("num2", help="the second number", type=int) 
args = parser.parse_args() 

उदाहरण:

"""Calculator using docopt 

Usage: 
    calc_docopt.py <operation> <num1> <num2> 
    calc_docopt.py (-h | --help) 

Arguments: 
    <operation> Math Operation 
    <num1>  First Number 
    <num2>  Second Number 

Options: 
    -h, --help  Show this screen. 

""" 
from docopt import docopt 

if __name__ == '__main__': 
    arguments = docopt(__doc__, version='Calculator with docopt') 
    print(arguments) 

नोट, कि docopt पार्सिंग के लिए Usage: और Options: वर्गों का उपयोग करता है। यहां Arguments: केवल अंतिम उपयोगकर्ता सुविधा के लिए प्रदान किया जाता है।

+1

शायद एक वर्ष का उपयोग करने के बाद, मुझे लगता है कि यह उल्लेखनीय है कि चूंकि डॉकोपट हाल ही में है और पाइथन के मूल का हिस्सा नहीं है, यह पुराने सिस्टम पर उपलब्ध नहीं हो सकता है। यानी, यह डेबियन व्हीज़ी पर नहीं है (लेकिन जेसी पर है)। – baldurmen

6

argparse पायथन डिफ़ॉल्ट लाइब्रेरी में है, इसलिए यह आपके प्रोग्राम में कोई अतिरिक्त निर्भरता नहीं जोड़ता है। मतभेद मुख्य रूप से आपके कोड को लिखने का तरीका हैं। argparse का उपयोग करके प्लगइन के लिए हुक जोड़ना संभव है ताकि वे आपके प्रोग्राम में अपने स्वयं के तर्क जोड़ सकें। उदाहरण के लिए flake8 इसका उपयोग करता है।

docopt एक तृतीय पक्ष मॉड्यूल तर्कों को पार्स करने का एक आसान तरीका प्रदान करता है। मैं अपनी सादगी के कारण व्यक्तिगत रूप से docopt पसंद करता हूं, लेकिन मैं यह नहीं कह रहा हूं कि सभी मामलों में इसका उपयोग करना सबसे अच्छा है। उनके दस्तावेज में वे उल्लेख करते हैं कि docopt का उपयोग करके argparse का उपयोग करते समय तर्क के अधिक संयोजनों का उपयोग करना संभव है।

4

क्यों क्लिक के लिए पेज:

http://click.pocoo.org/5/why/

argparse, docopt और खुद को क्लिक करें के बीच एक अच्छा तुलना है।

Click पायथन के लिए एक और कमांड लाइन पार्सिंग उपयोगिता है।