# 获取命令行参数
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)
本当の理由は、パラメータを指定せずにスクリプトを実行すると、
テストをしてみましょう:opts, args = getopt.getopt(sys.argv[1:], "hi:n:o:s:d:")
によって取得されたopts = []
が空のlist
であり、前述のように例外エラーが報告されないためです。 > の場合、list
文はfor op,value in opts:
ループに入らず、当然、for
のロジックはトリガーされません。else
リーリー
したがって、コードは次のように書き換える必要があります。リーリー
また、Python 2.7 からは、より柔軟で便利なが標準ライブラリに含まれるようになりましたので、
argparse
getopt
公式 Web サイトのマニュアルを置き換えることをお勧めします
次の文はすでに例外を報告しているため:
リーリー例外は事前にキャッチする必要があります:
リーリー次に、if/elif/else で通常のパラメータの入力を処理します。