2016-11-16 3 views
0

を読んで、私はこの問題に出くわしていない:のpython test.py -rまたはのpython test.py -sを:私は入力した場合GetoptのこれはpythonでGetoptのを使用して、私の最初の時間であるすべてのオプション

opts, args = getopt.getopt(sys.argv[1:], "hrs", ["help","random","somethingelse"]) 

for o, a in opts: 
    if o in "-h" or "--help": 
     help() 
    elif o in "-r" or "--random": 
     random() 
    elif o in "-s" or "--somethingelse": 
     somethingelse() 

。これは、random()またはsomethingelse()関数に行くのではなく、まだヘルプ関数に行きます。あなたはリストやタプルで可能なオプション置く必要があり

+1

条件が正しくない可能性があります: '' -h '、' --help ']内のo: – AChampion

答えて

0

:あなたはどのようなので、あなたは現在、それを持って

opts, args = getopt.getopt(sys.argv[1:], "hrs", ["help","random","somethingelse"]) 

for o, a in opts: 
    if o in ["-h", "--help"]: 
     help() 
    elif o in ["-r", "--random"]: 
     random() 
    elif o in ["-s", "--somethingelse"]: 
     somethingelse() 

の方法は、あなたの最初の条件if o in "-h" or "--help":は完全に有効なPythonのですが、それは常にTrueになります実際にテストするのは、それぞれo in "-h""--help"の「真実性」です。 がFalseであっても、であるため、"--help"は空でない文字列であるため、常にTrueです。一方

は、あなたが if o in ["-h", "--help"]:をテストする場合 oがリスト ["-h", "--help"]内の項目のうちのいずれかであれば、これはチェックして、それがある場合にのみ Trueを返します。

関連する問題