मैं एक समारोह है?अजगर 2.7 argparse
python test.py --x_center a --y_center b c
(c
उदाहरण के लिए, है, 3, 4 या अधिक मान)
मैं एक समारोह है?अजगर 2.7 argparse
python test.py --x_center a --y_center b c
(c
उदाहरण के लिए, है, 3, 4 या अधिक मान)
आपको लगता है कि इस तरह की तरह कुछ कर सकते हैं:
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
ऑब्जेक्ट पर विकल्पों और तर्कों तक पहुंच सकते हैं और अपने कार्यक्रम में प्रासंगिक चीजें कर सकते हैं।
लाइन एक्स (args.x_center, args.y_center, args.values) को सही –
@VasileiosAntoniou चलाने के लिए x (args.x, args.y, args.values) में बदलना होगा: क्या आप इसके बारे में निश्चित हैं ? कोड मेरे लिए काम करता है, और आपका परिवर्तन इसे तोड़ देता है। – icktoofay
हाँ मुझे यकीन है लेकिन इससे कोई फर्क नहीं पड़ता। कम से कम हम दोनों के पास एक चल रहा कोड है! :) –
प्रश्न क्या है? –