# 获取命令行参数
opts,args = getopt.getopt(sys.argv[1:],"hi:n:o:s:d:")
#function to show help information when user input "-h"
def usage():
print ("sys.argv[0]: ' -i p_case_dir -n p_case_id_str -o p_out_dir -s p_src_conn -d p_dst_conn'")
print ("sys.argv[0]: ' -h'")
for op,value in opts:
if(op == "-i"):
p_case_dir = value
elif(op == "-n"):
p_case_id_str = value
elif(op == "-o"):
p_out_dir = value
elif(op == "-s"):
p_src_conn = value
elif(op == "-d"):
p_dst_conn = value
elif(op == "-h"):
usage()
os._exit(0)
else:
usage()
os._exit(0)
La vraie raison est que lorsque vous exécutez le script sans paramètres, le
Faisons un test :opts, args = getopt.getopt(sys.argv[1:], "hi:n:o:s:d:")
obtenu paropts = []
est unlist
vide et ne signale pas une erreur d'exception comme mentionné ci-dessus, mais pour un Pour un , votre phraselist
n'entrera pas dans la bouclefor op,value in opts:
, et naturellement elle ne déclenchera pas la logique defor
.else
plus flexible et plus pratique a été inclus dans la bibliothèque standard, il est donc recommandé de remplacer le
argparse
getopt
manuel officiel du siteParce que la phrase suivante a déjà signalé une exception :
Les exceptions doivent être détectées à l'avance :
Gérez ensuite la saisie des paramètres normaux dans votre if/elif/else.