# 获取命令行参数
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)
Sebab sebenar ialah apabila anda menjalankan skrip tanpa parameter,
opts, args = getopt.getopt(sys.argv[1:], "hi:n:o:s:d:")
yang diperolehi olehopts = []
adalahlist
kosong dan tidak melaporkan ralat pengecualian seperti yang dinyatakan di atas, tetapi untuk Untuk kosonglist
, ayatfor op,value in opts:
anda tidak akan memasuki gelungfor
dan secara semula jadi ia tidak akan mencetuskan logikelse
.Jom buat ujian:
Jadi kod anda hendaklah ditulis semula sebagai:
Selain itu, bermula dari Python 2.7,
argparse
yang lebih fleksibel dan mudah telah dimasukkan ke dalam perpustakaan standard, jadi disyorkan untuk menggantikangetopt
manual laman web rasmi
Kerana ayat berikut telah melaporkan pengecualian:
Pengecualian perlu diketahui lebih awal:
Kemudian kendalikan input parameter biasa dalam if/elif/else anda.