getopt模块
python普通的命令行参数:
python test.py arg1 arg2 arg3
注:sys.argv[0] 表示脚本名
example:
def check(): out = '\n usage: python DTR.py <target> \n \n' if len(sys.argv) != 2 : out += ' error: Please specify one parameter, not empty or multiple parameters! \n' print out sys.exit(-1) return sys.argv[1]
getopt模块:
getopt模块是专门处理命令行参数的模块,支持短选项模式(-)和长选项模式(--)。
getopt.getopt 方法
getopt.getopt 方法用于解析命令行参数列表,语法格式如下:
getopt.getopt(args, options[, long_options])
方法参数说明:
-
args: 要解析的命令行参数列表。
-
options : 以字符串的格式定义,options 后的冒号 : 表示如果设置该选项,必须有附加的参数,否则就不附加参数。
-
long_options : 以列表的格式定义,long_options 后的等号 = 表示该选项必须有附加的参数,不带等号表示该选项不附加参数。
-
该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有 - 或 -- 的参数。
example:
#!/usr/bin/python # -*- coding: UTF-8 -*- import sys, getopt def check(): try: opts,args = getopt.getopt(sys.argv[1:],'-h-u:',['help','user=']) if len(opts) != 1: print 'sudo runall.py -u <user>! ' exit() except getopt.GetoptError: # except getopt.GetoptError as e: # print e 打印报错信息 print 'sudo runall.py -u <user> !! ' exit() for opt_name,opt_value in opts: if opt_name in ('-h','--help'): print 'sudo runall.py -u <user> ' if opt_name in ('-u','--user'): user = opt_value print user if __name__ == "__main__": check()
python test.py -u yx
python test.py --user yx或者python test.py --user=yx
python test.py -h
假如去掉u后边的冒号,执行python test.py -u 不报错
假如去掉user后边的等于号,执行python test.py --user 不报错
浙公网安备 33010602011771号