2017-09-26 4 views
0

condition que je suis en train de faire valoir des arguments utilisateur sont sûrs d'un certain type, quand le script run run de la ligne cmd avec -> python Script.py argv1 argv2 argv3 etc ...python de type coulée

L'idée est Si l'utilisateur entre seulement 2 arguments de ligne cmd, le reste des variables dans arg_list sera par défaut. Je veux m'assurer que ceux qu'ils ont entrés étaient du bon type.

Ci-dessous est une maquette de la situation que j'ai. Au moment où la condition if échoue, elle n'est pas reprise par le bloc except (y a-t-il un moyen de contourner cela?) En réalité, il y a beaucoup plus de variables à essayer, sauf pour chaque clause si elle n'est pas pratique.

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 

Toute aide serait formidable, merci!

Répondre

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

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