【python】参数解析

文章目录

python中实现参数解析主要有两种方式,argparse & sys.argv
前者适合复杂场景,支持设置命令提示信息;
后者适合简单场景,也不支持设置命令提示信息。

1.argparse

对于下面测试代码:

import argparse

parser = argparse.ArgumentParser(description='script desc ...')
parser.add_argument('a', type=int, help='help msg1', metavar='arg1')
parser.add_argument('b', type=str, default='1', help='help msg2', metavar='arg2')
parser.add_argument('-c', '--c_long', type=int, default=1, help='help msg3', metavar='arg3')
parser.add_argument('-d', '--d_long', type=str, default='1', help='help msg4', metavar='arg4')

args = parser.parse_args()
print(args)

if args.a:
    print(args.a, type(args.a))
if args.b:
    print(args.b, type(args.b))
if args.c_long:
    print(args.c_long, type(args.c_long))
if args.d_long:
    print(args.d_long, type(args.d_long))

控制台:

sh-3.2$ ../.venv/bin/python ./test_argparse.py 1 2 -c 3 -d 4
Namespace(a=1, b='2', c_long=3, d_long='4')
1 <class 'int'>
2 <class 'str'>
3 <class 'int'>
4 <class 'str'>


sh-3.2$ ../.venv/bin/python ./test_argparse.py -h
usage: test_argparse.py [-h] [-c arg3] [-d arg4] arg1 arg2

script desc ...

positional arguments:
  arg1                  help msg1
  arg2                  help msg2

options:
  -h, --help            show this help message and exit
  -c arg3, --c_long arg3
                        help msg3
  -d arg4, --d_long arg4
                        help msg4

几个注意点:

1.位置参数在传递时保持在脚本中的相对前后顺序就行,对具体位置没有强制要求,不可省略
2.可选参数-x--xxx传递值时对位置也没有要求,可省略
3.add_argument方法中type指定的类型,传入的参数值必须可解释为指定的类型,脚本内部也会将参数值自动转换为指定的类型。
4.metavar参数值在查看命令帮助信息时充当参数值占位符,对代码本身无影响。
5.对于带-的可选参数,如果长短参数名都存在,属性名只能通过长参数名获取。只存在一个时,通过存在的那个参数名获取。

2.sys.argv

import sys

if __name__ == '__main__':
    print(sys.argv, type(sys.argv))
sh-3.2$ ../.venv/bin/python ./test_argparse.py 1 2
['./test_argparse.py', '1', '2'] <class 'list'>

这种方式接收返回的是一个参数列表,解析时参数值要和传入的顺序一一对应,注意第一个值是调用的脚本名,接收到的参数值都会当做字符串看待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值