python脚本传入参数--精讲(getopt模块)

时间:2023-03-10 07:56:07
python脚本传入参数--精讲(getopt模块)

1.最常用的sys.argv[],这个不多谈

2.形如

dahu@dahu-OptiPlex-:~/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')] ============ args ==================
['file1', '-abb3', 'file2'] -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)