2010-02-03 16 views
15

यदि पाइथन लिपि में कोई तर्क पारित नहीं किया गया है तो मैं सहायता जानकारी कैसे प्रिंट करूं?पायथन खाली तर्क

#!/usr/bin/env python 

import sys 

for arg in sys.argv: 
    if arg == "do": 
     do this 
    if arg == "" 
     print "usage is bla bla bla" 

क्या मैं याद कर रहा हूँ if arg == "" लाइन है कि मैं :(

उत्तर

11
if len(sys.argv)<2: 

प्रोग्राम का नाम व्यक्त करने के लिए पता नहीं कैसे है हमेशा sys.argv में है [0]

+2

मैं सिर्फ होता ने कहा कि '== 1' लेकिन यह सब एक ही है। –

20
if len(sys.argv) == 1: 
    # Print usage... 

sys.argv का पहला तत्व हमेशा स्क्रिप्ट का नाम या खाली स्ट्रिंग का नाम होता है। यदि sys.argv में केवल एक तत्व है, तो कोई तर्क नहीं होना चाहिए।

http://docs.python.org/library/sys.html#sys.argv

1
#!/usr/bin/env python 

import sys 
args = sys.argv[1:] 

if args: 
    for arg in args: 
     if arg == "do": 
      # do this 
else: 
    print "usage is bla bla bla" 
+0

'if' के बाद 'if'' मेरे लिए थोड़ा अनावश्यक लगता है। मैंने यह दिखाने के लिए आपके उत्तर का एक बदलाव जोड़ा कि मेरा क्या मतलब है –

1

Noctis Skytower के जवाब के आधार पर

import sys 
args = sys.argv[1:] 

for arg in args: 
    if arg == "do": 
     # do this 

if not args: 
    print "usage is bla bla bla" 
+0

आपके दूसरे उदाहरण में कोई समस्या है। यदि आप इसे चलाने के लिए नहीं चाहते हैं तो आपको 'else' ब्लॉक में प्रवेश करने से पहले तोड़ना होगा। –

+0

@ नोक्टिस स्काईवाटर। हाँ आप सही हैं, मैं इसे हटा दूंगा –

5

के रूप में अन्य लोगों ने कहा है, तो आप देख सकते हैं कि किसी भी आर्ग करके में पारित कर दिया गया:

#!/usr/bin/env python 

import sys 
args = sys.argv[1:] 

if args: 
    for arg in args: 
     if arg == "do": 
      # do this 
else: 
    print "usage is bla bla bla" 

हालांकि, वहाँ एक पायथन मॉड्यूल है जिसे OptParse कहा जाता है जिसे चलते समय कमांड लाइन तर्कों को पार्स करने के लिए स्पष्ट रूप से विकसित किया गया था पटकथा। मैं इस पर ध्यान देने का सुझाव दूंगा, क्योंकि यह थोड़ा और "मानक अनुपालन" है (जैसा कि, यह पाइथन समुदाय के भीतर कमांड लाइन पार्सिंग की अपेक्षित और स्वीकृत विधि है)।

+1

"ऑप्टपर का उपयोग करें" गैर-तुच्छ कार्यक्रमों का सही उत्तर है। Optparse के लिए –

1

मैं तुम्हें lib optparse [1] का उपयोग करें, और अधिक सुरुचिपूर्ण है:

[1] अधिक शक्तिशाली कमांड लाइन विकल्प पार्सर < http://docs.python.org/library/optparse.html>

+0

+1! – jathanism

4

पीछा कर रहा है एक बहुत ही pythonic के हल के लिए जिस तरह से विकास अपने समस्या है, क्योंकि यह जानबूझकर छोड़कर कोशिश भीतर एक अपवाद .. उत्पन्न करता है:

import sys 

try: 
    sys.argv[1:] // do sth with sys,argv[1:] 
except IndexError: 
    print "usage is..." 
    sys.exit() 
0
import argparse 

def parse_args(): 
    parser = argparse.ArgumentParser(
     add_help=True, 
    ) 

    # your arguments here 

    if len(sys.argv) == 1: 
     parser.print_help() 
     sys.exit(0) 
    else: 
     options = parser.parse_args() 

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