2017-09-26 15 views
0

- >パイソンScript.py argv1 argv2 argv3等...のpython条件付型鋳造

アイデアがありますユーザーが2つのcmd行の引数を入力するだけであれば、arg_listの残りの変数はデフォルトになります。彼らが入力したものが正しいタイプのものであることを確認したい。

以下は私の状況を模擬したものです。 if条件が失敗した瞬間、それはexceptブロックでは取り上げられません(実際にはこの方法がありますか?)実際にはもっと多くの変数があるので、if節をtry-exceptにするのは実用的ではありません。

arg1 = 3.14 
arg2 = "Default 1" 
arg3 = "Default 2" 
arg4 = True 
arg_list = [arg1, arg2, arg3, arg4] 

for i in range(1, len(sys.argv)): 

    try: 
     if i==1: 
      arg_list[i-1] = float(sys.argv[i]) 
     elif i==2 or i==3: 
      arg_list[i-1] = str(sys.argv[i]) 
     else i==4: 
      arg_list[i-1] = bool(sys.argv[i]) 

    except TypeError as e: 
     # do stuff 

ご協力いただきありがとうございます。

答えて

1
typelist = [float, str, str, bool] 

for i, item in enumerate(sys.argv[1:]): 
    assert type(item) == typelist[i]