2017-01-24 6 views
0

まず最初は私はPythonの初心者です。 私はこのような二つの方法でPythonのファイルを作成しようとしている:私はちょうど1つの方法で動作するオプションを知っているコマンドラインからPythonメソッドを開く方法(複数の方法の選択肢)

def hello(): 
    print("Hello.") 

def bye(): 
    print("Bye bye.") 

if __name__ == "__main__": 
    hello() 

これは、このコマンドを使用して、CMDからファイルを開くようになる:

>python file.py 

繰り返しますが、それはファイルを開きますが、(ハロー展開)、私は(ハロー、ユーザが選択できるようにするものが必要)またはbye()メソッドを使用します。インターネット上で私は、次のCMDコマンド

>python file.py hello() 
>python file.py bye() 

が何らかの形で動作することを見ましたが、私は誰もが知っているどのように行う、わからないのですか?

おはようございます!

答えて

4

コマンドライン引数は、sys.argvで利用できます。

最も簡単な方法は、次のようになります。

import sys 

def hello(): 
    print("Hello.") 

def bye(): 
    print("Bye bye.") 

def main(): 
    funcname = sys.argv[1] 
    if funcname == 'hello': 
     hello() 
    elif funcname == 'bye': 
     bye() 
    else: 
     print("ERROR: Invalid function") 

if __name__ == '__main__': 
    main() 

この上の改善がマッピングを作成するには、次のようになります。

import sys 

def hello(): 
    print("Hello.") 

def bye(): 
    print("Bye bye.") 

def main(): 
    funcmap = { 
     'hello': hello, 
     'bye': bye, 
    } 
    def invalid(): 
     print("ERROR: Invalid function") 
     sys.exit(1) 

    funcname = sys.argv[1] 
    f = funcmap.get(funcname, invalid) 
    f() 

if __name__ == '__main__': 
    main() 

あなたは、より複雑なものにしたい場合は、gitはサブを処理する方法のように - コマンドgit push origin mastergit statusの場合は、​​サブパーサーを使用することをおすすめします。詳細はthis question/answerを参照してください。

+0

Reinhartありがとうございました! –

関連する問題