python-执行程序获取命令行参数

有时候我们在执行程序时,程序要读去命令行中的参数

1、sys模块
通过sys模块中sys.argv,访问命令行中的参数
如:

#coding:utf-8
import sys

def read_command_param():
    print ("脚本名称:" + sys.argv[0])
    print ("参数个数" , len(sys.argv))
    print ("参数列表:"+ str(sys.argv))
    print ("ip:"+ sys.argv[1])

read_command_param()

执行命令:python command_param.py 192.168.1.1
在这里插入图片描述
2、getopt模块
如果想要在命令行参数前加命令行选项,
如python command_param.py -u root -p password
-u -p为命令行选项,而不是参数
这时我们需要getopt模块,使用getopt.getopt方法

def command_param(argv):
    try:
        options, args = getopt.getopt(argv, "hp:i:u:", ["help", "ip=", "port=", "user="])
    except getopt.GetoptError:
        sys.exit()
    for option, value in options:
        if option in ("-h", "--help"):
            print("help")
        if option in ("-i", "--ip"):
            print("ip is: {0}".format(value))
        if option in ("-p", "--port"):
            print("port is: {0}".format(value))
        if option in ("-u", "--user"):
            print("user is: {0}".format(value))
    print("error args: {0}".format(args))

command_param(sys.argv[1:])

执行命令:python command_param.py -i 192.168.1.1 -i 192.168.1.2 --user wxt
在这里插入图片描述
注:
sys.argv是获取参数列表,其中sys.argv[1:]获取除第一个参数,因为第一个参数为执行文件“command_param.py”,即argv得到所有参数
“hp:i:u:”, [“help”, “ip=”, “port=”, “user=”] 这部分匹配命令行选项,如-u --user
for循环,提取命令行选项后面的参数

3、argparse模块
用于解析命令行选项和参数的标准模块

# encoding=utf-8
import argparse

def main():
    parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")#创建解析对象
    parser.add_argument("-i","--ip",default='192.168.1.1', nargs='*',help="ip address", dest="ip_address")#向该对象中添加使用到的命令行选项和参数
    parser.add_argument("-p","--port",default=80, nargs='*',help="ip address", dest="port")#向该对象中添加使用到的命令行选项和参数

    args = parser.parse_args()#解析命令行

    print (args.ip_address)
    print (args.port)

main()

执行命令:python command_param.py -i 192.168.1.1 192.168.1.2 -p 80
在这里插入图片描述
解析:
1)创建argparse对象
2)向该对象中添加命令行选项和参数
3)解析命令行
4)提取命令行参数

其中add_argument(name or flags... [, action] [, nargs] [, const] [, default] [, type] [, choices] [, required] [, help] [, metavar] [, dest])
name or flags: 命令行参数名或者选项,如-p, --port
action:
    store: 默认的action模式,存储值到指定变量
    store_const: 存储值在参数的const部分指定,常用来实现非布尔的命令行flag
    store_true/store_false: 布尔开关。store_true的默认值为False,若命令行有输入该布尔开关则值为True。store_false相反
    append: 存储值到列表,该参数可以重复使用
    append_const: 存储值到列表,存储值在参数的const部分指定
    count: 统计参数简写的输入个数
    version: 输出版本信息,然后退出脚本
nargs: 命令行参数的个数,一般用通配符表示: ?表示只用一个,*表示0到多个,+表示1到多个
default: 默认值
type: 参数的类型,默认是string类型,还可以是float、int和布尔等类型
choices: 输入值的范围
required: 默认为False,若为True则表示该参数必须输入
help: 使用的帮助提示信息
dest: 参数在程序中的对应的变量名称,如:add_argument("-a", dest="code_name"),在脚本中用parser.code_name来访问该命令行选项的值
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值