2011-12-02 12 views
13

मैं एक समारोह है?अजगर 2.7 argparse

python test.py --x_center a --y_center b c (c उदाहरण के लिए, है, 3, 4 या अधिक मान)

+1

प्रश्न क्या है? –

उत्तर

39

आपको लगता है कि इस तरह की तरह कुछ कर सकते हैं:

import argparse 

def x(x_center, y_center, values): 
    print "X center:", x_center 
    print "Y center:", y_center 
    print "Values:", values 

def main(): 
    parser = argparse.ArgumentParser(description="Do something.") 
    parser.add_argument('-x', '--x-center', type=float, required=True) 
    parser.add_argument('-y', '--y-center', type=float, required=True) 
    parser.add_argument('values', type=float, nargs='*') 
    args = parser.parse_args() 

    x(args.x_center, args.y_center, args.values) 

if __name__ == '__main__': 
    main() 

इसे आजमाएं:

$ python test.py --x-center 1 --y-center 2 3 4 5 
X center: 1.0 
Y center: 2.0 
Values: [3.0, 4.0, 5.0] 

the argparse module का उपयोग करने के लिए, आप आमतौर पर main फ़ंक्शन (और कुछ बॉयलरप्लेट जो इसे कॉल करते हैं) से शुरू करना चाहते हैं। main फ़ंक्शन में, आप create an ArgumentParser पर चाहेंगे। उसके बाद, आप कुछ तर्क जोड़ना चाहेंगे।

कोई तर्क जोड़ने के लिए, आप add_argument का उपयोग करते हैं।

parser.add_argument('-x', '--x-center', type=float, required=True) 

यहाँ, हम एक विकल्प, -x है, जो भी एक लंबे विकल्प संस्करण है, --x-center है जोड़ रहे हैं। type हम add_argument पर पास करते हैं, इसे float (और त्रुटि अगर यह मान्य फ्लोट नहीं है) की आवश्यकता होती है। हम argparse भी बताते हैं कि इसकी आवश्यकता है; अगर यह प्रदान नहीं किया गया है, त्रुटि।

parser.add_argument('values', type=float, nargs='*') 

यह पहले की तरह है, लेकिन चूंकि स्ट्रिंग हम यह करने के लिए पारित एक पानी का छींटा के साथ शुरू नहीं करता है, यह एक विकल्प नहीं है मान लिया गया है, बल्कि एक गैर विकल्प तर्क। फिर, हम इसे बताते हैं कि हम float एस चाहते हैं। nargs आपको यह निर्दिष्ट करने की अनुमति देता है कि इसमें एक से अधिक तर्क लेते हैं। * निर्दिष्ट करता है कि हम किसी भी प्रकार की तर्क चाहते हैं।

अंत में, हम parse_args के साथ कमांड लाइन को पार्स करते हैं। यह एक ऑब्जेक्ट देता है जिसे हम स्टोर करेंगे।

तब आप उस args ऑब्जेक्ट पर विकल्पों और तर्कों तक पहुंच सकते हैं और अपने कार्यक्रम में प्रासंगिक चीजें कर सकते हैं।

+0

लाइन एक्स (args.x_center, args.y_center, args.values) को सही –

+0

@VasileiosAntoniou चलाने के लिए x (args.x, args.y, args.values) में बदलना होगा: क्या आप इसके बारे में निश्चित हैं ? कोड मेरे लिए काम करता है, और आपका परिवर्तन इसे तोड़ देता है। – icktoofay

+0

हाँ मुझे यकीन है लेकिन इससे कोई फर्क नहीं पड़ता। कम से कम हम दोनों के पास एक चल रहा कोड है! :) –

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