Python_argparse

简介

argparse是Python的一个命令行解析器

1、创建解析器    ArgumentParser

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

print(parser.print_help())
(venv) E:\文档\Python\PythonTest>python argparseTest.py
usage: my_program [options] usage

help信息前显示的信息———我的argparse命令行参数用法

optional arguments:
  -h, --help  show this help message and exit

help信息之后显示的信息
None

prog : 脚本文件名,默认为sys.argv[0],用来在help信息中描述程序的名称

usage :描述程序用途的字符串

description :help信息前显示的信息

epilog : help信息之后显示的信息

2、添加参数选项 add_argument

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

 1. name or flags : 参数有两种,可选参数和位置参数

  • positional arguments - 位置参数

        用法是在命令行中不用带“-”就可以用

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("echo")  #位置参数

args = parser.parse_args()

print(args.echo)

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py hahaha
hahaha
  • optional arguments - 可选参数

         用法是在命令行中要使用横杠,其中有两种方式:

             一种是通过一个"-"来指定的短参数,如"-h";

             一种是通过一个"--"来指定的长参数,如"--help";

这两种方式可以同时使用或只用一种

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", "--foo", help = "这是一个f或foo命令的指令")    #可选参数
#该行定义了可选参数-f 或 --foo, 通过解析后,其值保存在args.foo变量中

args = parser.parse_args()

print(args.foo)

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py -f hahaha
hahaha

(venv) E:\文档\Python\PythonTest>python argparseTest.py --foo heiheihei
heiheihei

 2. action

在命令行中使用 "-f" 时,必须指定参数值,否则就会报错,有没有像 "-h" 那样,不需要指定参数值得呢,答案是有的,通过定义参数时指定action = "store_true" 即可,用法如下

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", "--foo", help = "这是一个f或foo命令的指令", action = "store_true")

args = parser.parse_args()

print(args.foo)

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py -f
True

  -f 没有指定任何参数,其实存的是True或False,如果出现,则其值为True,否则为False

 3. nargs : 指定参数的数量

 4. const : 保存一个常量

 5. default : 默认值

      1. 参数的值可以为整数N(N个),*(任意个,可以为0个),+(一个或多个)

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", help = "这是一个f命令的指令", nargs = "*")
parser.add_argument("-v", help = "这是一个v命令的指令", nargs = "*")

print(parser.parse_args("-f 1 2 -v 3 4 5".split()))

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f=['1', '2'], v=['3', '4', '5'])

      2. 值为?时,首先从命令行获取的参数,如果有 -v 而后面没加参数,则从const中取值,如果没有 -v ,则从default中取值

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", help = "这是一个f命令的指令", nargs = "?", default = "default")
parser.add_argument("-v", help = "这是一个v命令的指令", nargs = "?", const = "hahaha", default = "default")

print(parser.parse_args("-f 1 -v 2".split()))
print(parser.parse_args("-f 1 -v".split()))
print(parser.parse_args([]))

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f='1', v='2')
Namespace(f='1', v='hahaha')
Namespace(f='default', v='default')

6. type : 指定的参数类型,默认为str

7. choices : 设置参数值的范围,如果choices中的类型不是字符串,记得指定type

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", help = "这是一个f命令的指令", type = int, choices = range(1, 4))

print(parser.parse_args("-f 1".split()))
print(parser.parse_args("-f 4".split()))

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f=1)

usage: my_program [options] usage
my_program: error: argument -f: invalid choice: 4 (choose from 1, 2, 3)

8. required : 可选参数在命令行中是否可以省略(仅针对可选参数)

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", help = "这是一个f命令的指令", required=True)

print(parser.parse_args())

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
usage: my_program [options] usage
my_program: error: the following arguments are required: -f

(venv) E:\文档\Python\PythonTest>python argparseTest.py -f hahaha
Namespace(f='hahaha')

9.help : 设置这个选项的帮助信息

10.metavar : 该选项默认时会把参数的名字变为大写;更改时会在帮助信息中显示指定名称

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", "--foo", help = "这是一个f命令的指令", metavar="Function")

print(parser.print_help())

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
usage: my_program [options] usage

help信息前显示的信息———我的argparse命令行参数用法

optional arguments:
  -h, --help            show this help message and exit
  -f Function, --foo Function
                        这是一个f命令的指令

help信息之后显示的信息
None

11. dest : 这个参数相当于把位置参数或可选参数关联到一个特定的新变量中

import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", help = "这是一个f命令的指令")

print(parser.parse_args("-f haha".split()))

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(f='haha')

########################################################################################
import argparse

parser = argparse.ArgumentParser(prog = "my_program", usage = "%(prog)s [options] usage", description = "help信息前显示的信息———我的argparse命令行参数用法", epilog = "help信息之后显示的信息")

parser.add_argument("-f", help = "这是一个f命令的指令", dest = "foo")

print(parser.parse_args("-f haha".split()))

#运行结果------------------------------------------------------------
(venv) E:\文档\Python\PythonTest>python argparseTest.py
Namespace(foo='haha')

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值