python脚本传入参数--精讲(getopt模块)
1.最常用的sys.argv[],这个不多谈
2.形如
dahu@dahu-OptiPlex-3046:~/json_folder$ python sub1.py -abb -oaaa --output=out -caa -abb3 --output=papa file1 -abb3 file2
输出:
============ opts ================== [('-a', 'bb'), ('-o', 'aaa'), ('--output', 'out'), ('-c', 'aa'), ('-a', 'bb3'), ('--output', 'papa')] 6 ============ args ================== ['file1', '-abb3', 'file2'] 3 -a ==> bb -o ==> aaa --output ==> out -c ==> aa -a ==> bb3 --output ==> papa
code:
#coding=utf-8 #!/usr/bin/env python import sys,getopt
# 短格式 后面没有冒号:表示后面不带参数,后面有冒号表示后面需要参数 # 长格式 后面没有等号 =,表示后面不带参数,其他有 =,表示后面需要参数 # 注意一旦出现不带长短格式的标记'-',就进入arg模式了,例如例子中file1后面的-abb3就认为是arg,而不是opt def usage(): print("Usage:%s [-a|-o|-c] [--help|--output] args...." % sys.argv[0]) if "__main__" == __name__: try: opts, args = getopt.getopt(sys.argv[1:], "a:o:c:", ["help", "output="]) print("============ opts ==================") print(opts) print len(opts) print("============ args ==================") print(args) print len(args)
# check all param for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit(1) elif opt in ("-t", "--test"): print("for test option") else: print("%s ==> %s" % (opt, arg)) except getopt.GetoptError: print("getopt error!") usage() sys.exit(1)