Python命令行解析argparse常用语法

python中的命令行解析最简单最原始的方法是使用sys.argv来实现,更高级的可以使用argparse模块(从python 2.7开始被加入到标准库中)

基本使用

#导入argparse模块
import argparse

#创建解析器对象ArgumentParser,可以添加参数
#description:描述程序
#parser=argparse.ArgumentParser(description="This is a example program "),add_help:默认是True,可以设置False禁用
parser=argparse.ArgumentParser()

#add_argument()方法,用来指定程序需要接受的命令参数
parser.add_argument("echo",help="echo the string")
args=parser.parse_args()
print(args.echo)

add_argument()方法,用来指定程序需要接受的命令参数

定位参数:parser.add_argument("echo",help="echo the string")

可选参数:parser.add_argument("--verbosity", help="increase output verbosity")

        在执行程序的时候,定位参数必选,可选参数可选。

add_argument()常用的参数:

  • dest:如果提供dest,例如dest="a",那么可以通过args.a访问该参数
  • default:设置参数的默认值
  • action:参数出发的动作
  • store:保存参数,默认
  • store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。
  • store_ture/store_false:保存相应的布尔值
  • append:将值保存在一个列表中。
  • append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。
  • count:参数出现的次数

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

version:打印程序版本信息

  • type:把从命令行输入的结果转成设置的类型
  • choice:允许的参数值

      parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

  • help:参数命令的介绍

 

参考:http://www.cnblogs.com/zknublx/p/6106343.html

 

为什么在argparse中,'True'始终为'True'

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--bool', default=True, type=bool, help='Bool type')
args = parser.parse_args()
print(args.bool)

python test.py --bool False
True  ?????

你没有传入这个False对象。你传入的是'False'字符串,这是一个非零长度的字符串。

只有一串长度为0的测试为false:

>>> bool('')
False
>>> bool('Any other string is True')
True
>>> bool('False')  # this includes the string 'False'
True

请改用store_truestore_false使用动作。对于default=True,使用store_false

parser.add_argument('--bool', default=True, action='store_false', help='Bool type')

现在省略开关组args.boolTrue,使用--bool(没有进一步的参数)设定args.boolFalse

python test.py
True

python test.py --bool
False

----------------------------------------------------------------------------------------

如果必须TrueFalse在其中解析字符串,则必须明确地这样做:

def boolean_string(s):
    if s not in {'False', 'True'}:
        raise ValueError('Not a valid boolean string')
    return s == 'True'

并将其用作转换参数:

parser.add_argument('--bool', default=True, type=boolean_string, help='Bool type')

此时--bool False将按预期工作。

https://cloud.tencent.com/developer/ask/188470

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值