python argparse库_python标准库之argparse

argparse的使用

argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。当然,Python 也有第三方的库可用于命令行解析,而且功能也更加强大,比如 docopt,Click。

ipython下使用argparse

首先安装ipython

pip3 install ipython

执行下面命令

import argparse

parse=argparse.ArgumentParser(

description="A simple argument parser",

epilog="This is where you might put example usage"

)

parse.print_help()

输出

usage: ipykernel_launcher.py [-h]

A simple argument parser

optional arguments:

-h, --help show this help message and exit

This is where you might put example usage

上面的代码很简单,

方法ArgumentParser具体参数如下

ArgumentParser(prog=None, usage=None,description=None, epilog=None, parents=[],formatter_class=argparse.HelpFormatter, prefix_chars='-',fromfile_prefix_chars=None, argument_default=None,conflict_handler='error', add_help=True)

这些参数都有默认值,当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法时,会打印这些描述信息,一般只需要传递description参数。

上面的代码是在命令行中运行,下面我们把代码写在py文件,并通过命令行调用。

通过命令行传参调用py文件

首先我们创建一个py文件代码如下

#1.py

import argparse

def get_args():

parser=argparse.ArgumentParser(

description="A Simple argument parser",

epilog="This is where you might put usage"

)

return parse.parse_args()

if __name__=="__main__":

get_args()

然后在命令执行如下命令

python3 1.py -h

输出和第一个例子类似的内容

usage: 1.py [-h]

A Simple argument parser

optional arguments:

-h, --help show this help message and exit

This is where you might put usage

下面让我加一些自定义的参数

添加自定义参数

首先我们先来看一段代码

#2.py

import argparse

def get_args():

parser=argparse.ArgumentParser(

description="A simple argument parser",

epilog="This is where you might put example usage")

# 使用required参数设置为必须的参数

parser.add_argument('-x', action="store", required=True,help='Help text for option X')

# 可选参数

parser.add_argument('-y', help='Help text for option Y', default=False)

parser.add_argument('-z', help='Help text for option Z',type=int)

print(parser.parse_args())

if __name__=='__main__':

get_args()

我们使用add_argument添加需要参数,第一个值是命令行输入的参数,设置required参数的值可以设定是否为必须参数,显示help帮助内容,type声明输入参数的类型。

调用parse_args方法可以解析添加的参数。

命令行输入下面内容

python3 2.py

输出

usage: 2.py [-h] -x X [-y Y] [-z Z]

2.py: error: the following arguments are required: -x

可以看出,调用的文件文2.py,有 x y z三个参数,其中第二行出错了,原因是x是必须参数而这里我没有赋值。

如是我修改成以下内容

python3 2.py -x hehe -y "233" -z "233"

可以看到结果如下

Namespace(x='hehe', y='233', z=233)

因为我声明了z为int所以这里我即使属于字符串程序里也会给转成int类型。

短选项和长选项

下面我们将会学习如何使用短选项和长选项,我们实际上已经使用了短选项,

parser.add_argument('-x',action = "store",required = True,help = "Help text for option X")

如果我们想使用长选项,我们仅仅需要在短选项的右边添加长选项,如下所示,

parser.add_argument('-x','--execute', action = "store",required = True,help = "Help text for option X")

你将会注意到长选项不止一个字符,并且它必须要以两个破折号开始,而不是一个。

选项冲突

如果两个选项相互冲突,你该如何解决?一个常见的例子就是在调试模式还是在静音模式下,运行你的应用?你可以在任意一种模式下运行,但是不能同时在两种模式下运行。我们如何防止用户以这种方式运行呢?一种简单的方式就是通过mutually_exclusie_group函数,假设选项x和选项y不能同时运行。

import argparse

def get_args():

parser = argparse.ArgumentParser(

description = "A simple argument parser",

epilog = "This is where you might put example usage"

)

group = parser.add_mutually_exclusive_group()

group.add_argument('-x','--execute', action = "store",help = "Help text for option X")

group.add_argument('-y',help = "Help text for option Y",default = False)

parser.add_argument('-z',help = "Help text for option Z",type = int)

print(parser.parse_args())

if __name__ == "__main__":

get_args()

你将会注意到我们创建了一个手动排它的群组,我们将需要手动排它的选项添加到群组,剩下的选项继续添加到常规的parser群组,让我们尝试着在命令行中输入如下命令,

python3 2.py -x 10 -y 2

当我们执行这条命令,控制台输出,

usage: 2.py [-h] [-x EXECUTE | -y Y] [-z Z]

2.py: error: argument -y: not allowed with argument -x/--execute

很明显,它并没有执行成功,并且argparse模块告诉我们什么原因。

参考资料:

python201

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python argparse 模块是 Python 标准中用于解析命令行参数和选项的模块。它提供了一种简单而灵活的方法来处理命令行参数,并且可以自动生成格式漂亮的帮助文档。 argparse 中有许多参数选项,其中一个是 type。type 参数指定了命令行参数的数据类型。当我们使用 argparse 解析命令行参数时,它会将字符串类型的参数转换为指定的类型。例如,如果我们指定 type=int,那么 argparse 将会把输入的字符串转换为整数类型。 argparse 提供了一些内置的类型函数,如 int、float、str、bool 等,也可以自定义类型函数。下面是一个示例,说明如何使用 type 参数来指定参数的数据类型: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument('--name', type=str, help='name of the user') parser.add_argument('--age', type=int, help='age of the user') args = parser.parse_args() print(args.name) print(args.age) ``` 在上面的示例中,我们使用 add_argument() 方法添加了两个参数:--name 和 --age。type 参数分别指定了它们的数据类型为 str 和 int。 当我们在命令行中输入参数时,argparse 会自动将字符串类型的参数转换为指定的类型。例如,我们执行以下命令: ```bash python test.py --name Tom --age 25 ``` argparse 将会把 name 参数解析为字符串类型的 'Tom',将 age 参数解析为整数类型的 25。 总之,argparse 的 type 参数让我们可以轻松地控制命令行参数的数据类型,使得命令行参数处理变得更加简单和方便。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值