Rumah > Soal Jawab > teks badan
# 获取命令行参数
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)
PHP中文网2017-04-18 09:46:25
Sebab sebenar ialah apabila anda menjalankan skrip tanpa parameter, opts, args = getopt.getopt(sys.argv[1:], "hi:n:o:s:d:")
yang diperolehi oleh opts = []
adalah list
kosong dan tidak melaporkan ralat pengecualian seperti yang dinyatakan di atas, tetapi untuk Untuk kosong list
, ayat for op,value in opts:
anda tidak akan memasuki gelung for
dan secara semula jadi ia tidak akan mencetuskan logik else
.
Jom buat ujian:
lst = []
for i in lst:
if i:
print(i)
else:
print("hello")
# 结果为空, for循环并没有执行
lst = [0]
for i in lst:
if i:
print(i)
else:
print("hello")
# 列表非空, 可迭代, 正常进入else
Jadi kod anda hendaklah ditulis semula sebagai:
# coding=utf8
import getopt
import sys
def usage():
print("{}: '-i p_case_dir -n p_case_id_str -o p_out_dir -s p_src_conn -d p_dst_conn'".format(sys.argv[0]))
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "hi:n:o:s:d:")
except getopt.GetoptError as e:
print(e)
usage()
sys.exit(1)
if opts:
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
else:
usage()
sys.exit(1)
else:
usage()
sys.exit(1)
if __name__ == "__main__":
main()
Selain itu, bermula dari Python 2.7, argparse
yang lebih fleksibel dan mudah telah dimasukkan ke dalam perpustakaan standard, jadi disyorkan untuk menggantikan getopt
manual laman web rasmi
迷茫2017-04-18 09:46:25
Kerana ayat berikut telah melaporkan pengecualian:
opts,args = getopt.getopt(sys.argv[1:],"hi:n:o:s:d:")
Pengecualian perlu diketahui lebih awal:
try:
opts,args = getopt.getopt(sys.argv[1:],"hi:n:o:s:d:")
except getopt.GetoptError:
print('This options is not supported.')
exit(-1)
Kemudian kendalikan input parameter biasa dalam if/elif/else anda.