# 获取命令行参数
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
이고 위에서 언급한 것처럼 예외 오류를 보고하지 않지만 For an 빈list
, 귀하의for op,value in opts:
문장은for
루프에 들어가지 않으며 자연스럽게else
의 논리를 실행하지 않습니다.테스트를 해보자:
으아악따라서 코드는 다음과 같이 다시 작성되어야 합니다.
으아악또한 Python 2.7부터는 더욱 유연하고 편리한
을 대체하는 것이 좋습니다.argparse
이 표준 라이브러리에 포함되어 있으므로getopt
공식 홈페이지 매뉴얼
다음 문장이 이미 예외를 보고했기 때문입니다.
으아악예외를 사전에 포착해야 합니다.
으아악그런 다음 if/elif/else에서 일반 매개변수 입력을 처리합니다.