2010-02-03 34 views
15

Python komut dosyasına hiçbir argüman aktarılmamışsa nasıl yardım bilgisi yazdırırım?python boş bağımsız değişken

#!/usr/bin/env python 

import sys 

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

ne kaçırıyorum ben :(

cevap

11
if len(sys.argv)<2: 

Programın ismi ifade etmek nasıl bilmiyorum if arg == "" hat sys.argv daima edilir [0]

+2

sadece var dedi '== 1' ama hepsi aynı olacaktır. –

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

sys.argv ilk öğe her zaman komut dosyası kendisi veya boş bir dize ad olduğunu. sys.argv tek öğesi varsa o zaman hiçbir argüman orada olmalı.

Noctis Skytower cevabı dayanarak

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

, 'for' tarafından takip ediliyorsa, 'for' bana biraz fazla gelir. Ne demek istediğimi göstermek için cevabınızın bir varyasyonunu ekledim. –

1

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

İkinci örneğinizde bir sorun var. Çalışmasını istemiyorsanız 'else' bloğuna girmeden önce kırmanız gerekir. –

+0

@Noctis Skytower. Evet haklısınız, onu sileceğim –

5

Diğerleri söylediler herhangi args yaparak geçirilen olsaydı, kontrol edebilirsiniz:

#!/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" 

Ancak orada, Çalışırken komut satırı bağımsız değişkenlerini ayrıştırmak için özel olarak geliştirilen OptParse adı verilen bir Python modülüdür Bir komut dosyası. Buna biraz daha "standartlara uygun" olduğu gibi bakmayı öneririm (As, Python topluluğu içinde beklenen ve kabul edilen komut satırı yöntemidir).

+1

"Use optparse", önemsiz olmayan programlar için doğru cevaptır. Optparse için –

4

aşağıdaki çok Pythonictir yolu senin kasten hariç denemede içinde bir istisna .. oluşturur çünkü sorun,:

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 
İlgili konular