天天看点

用python写一个专业的传参脚本

问:linux系统命令如ls,它有几十个参数,可带一个或多个参数,可不分先后,用起来是非常的专业。但是自己写的传参脚本,一般只传一个参数,如果传多个,也是固定的顺序,那么如何用python写出更专业的传参脚本呢?

答:使用python自带的getopt模块。

1、语法:

import getopt

getopt.getopt(args,shortopts, longopts=[])

#函数示例:getopt.getopt(sys.argv[1:],'u:p:P:h',["username=","password=","port=","help"])

#输出格式:[('-p', '123'),('-u', 'root')]  []   #后面中括号包含没有"-"或"--"的参数

2、参数说明:

args      所有传参参数,一般用sys.argv[1:]表示,即所有传参内容;

shortopts短格式,一般参数如-u,-p,-h等(一个"-"的)就是短格式;那写在函数中就是"u:p:P:h",有冒号代表有参数,没冒号代表没参数。

longopts  长格式,一般参数如--username,--password,--help等(两个"-"的)就是长格式;那写在函数中就是["usrname=",'password=","help"],其中--help是没有值的,所以没有等于号。其它有等于号,表示后面需要参数。

3、演示效果:

短格式传参:

[root@yang scripts]# python   getopt_test.py -u yangyun -p 123456 -P 2222

username: yangyun

password: 123456

port: 2222

长格式传参:(也可以加=号)

[root@yang scripts]# python   getopt_test.py  --username yangyun   --password 123456 --port 2222

长短格式都用:

[root@yang scripts]# python   getopt_test.py  --username=yangyun -p 123456   --port 2222

只传单个参数,其它是默认值:

[root@yang scripts]# python   getopt_test.py  -p 123456

username: root

port: 22

#此处port与user都用的默认值,默认值在函数里指定

4、python传参脚本实例:

# cat  getopt_test.py