2010-07-13 13 views
12

संभव डुप्लिकेट:
What's the best way to grab/parse command line arguments passed to a Python script?पायथन में कमांड लाइन तर्कों का विश्लेषण कैसे करें?

मैं अपने अजगर 2.6 कार्यक्रम में आदेश पंक्ति तर्क पार्स करने के लिए सक्षम होने के लिए करना चाहते हैं।

आदर्श रूप में, मैं इन मामलों को संभालने के लिए सक्षम होना चाहते हैं:

# Show some help 
./myprogram --help 

# These are equivalent 
./myprogram --block=1 
./myprogram -b 1 

# This means verbose, and twice as verbose: 
./myprogram -v 
./myprogram -vv 

उत्तर

32

पुराने पायथन संस्करणों के लिए argparse मॉड्यूल (या optparse) देखें।
ध्यान दें कि argparse/optparsegetopt के लिए नए, बेहतर प्रतिस्थापन हैं, इसलिए यदि आप इसके लिए नए हैं तो वे अनुशंसित विकल्प हैं। getopt डॉक्स से:

नोट getopt मॉड्यूल आदेश पंक्ति विकल्प जिसका एपीआई बनाया गया है सी getopt() फ़ंक्शन के उपयोगकर्ताओं के लिए परिचित होने के लिए एक पार्सर है। उपयोगकर्ता जो सी getopt() फ़ंक्शन से अपरिचित हैं या जो कम कोड लिखना चाहते हैं और बेहतर सहायता और त्रुटि संदेश प्राप्त करना चाहते हैं, इसके बजाय argparse मॉड्यूल का उपयोग करने पर विचार करना चाहिए।

+1

और द्वारा "पुराने अजगर संस्करण" की जरूरत सशर्त जाते थे, वह हर संस्करण है कि 8 से अधिक दिनों जारी किया गया था मतलब है पहले। –

+6

@Forest - shhhh, हम अभी भविष्य में हैं! ;) – tzaman

+3

और जैसे ही समय बीतता है, यह उत्तर सिर्फ अधिक से अधिक सही हो जाता है। – jcdyer

3

अजगर, तर्क में बनाया प्रसंस्करण है getopt मॉड्यूल के साथ।

यह तर्कों के लंबे और छोटे रूपों के साथ-साथ "नग्न" और पैरामीटरयुक्त संस्करण (--help बनाम --num=7) को संभाल सकता है।

अपने विशिष्ट उपयोग के मामलों के लिए (एक छोटे से अधिक के साथ), तो आप शायद की तरह कुछ पर विचार करना होता:

opts,args = getopt.getopt(argv,"b:vVh",["block=", "verbose", "very-verbose", "help"]) 

मैं अपने सिर के ऊपर से यकीन नहीं है अगर यह बहु चरित्र की अनुमति देता है एकल-हाइफ़न वेरिएंट जैसे -vv। मैं अपने जीवन को आसान बनाने के लिए बस -v और -V का उपयोग करता हूं।

1

उस लिंक से एक बेहतर विकल्प आप उपयोग कर अजगर का कौन सा संस्करण पर कर रहे हैं, नवीनतम ones..2.7, और 3.1.2, एक और भी नए मॉड्यूल में बनाया गया है मॉड्यूल OptParse या getopt, और निर्भर करता है आधिकारिक python.org संदर्भ पर प्रलेखन में उन मॉड्यूल के लिए दस्तावेज़ीकरण और उदाहरणों का एक बहुत ही जानकारीपूर्ण सेट है। यदि आप python.org पर जाते हैं और बस ऑप्टपर्स या गेटऑप्ट के लिए त्वरित खोज करते हैं, तो आपके पास आवश्यक सब कुछ होगा।

1

optfunc एक दिलचस्प छोटा मॉड्यूल है। यह बहुत अच्छा है अगर आप जल्दी से एक छोटी लिपि लिखना चाहते हैं। बड़ी चीजों के लिए मैं argparse के साथ जाऊंगा जैसा कि अन्य ने लिखा था।

-4

एक बेहतर तरीका हो सकता है, लेकिन मैं सिर्फ sys.argv का उपयोग करता है और जहां भी यानी

if '--v' or '--vv' in sys.argv : 
    print 'verbose message' 
संबंधित मुद्दे