python argparse

python标准库中的argparse用来解析命令行参数(ubuntu系统通过sys.argv)。

sys.argv:存储了从命令行传入python脚本中的变量,argv[0]存储的是python脚本的名字(如果是通过-c执行的脚本,那argv[0]存储的是string"-c",如果没有脚本名字传入python interpreter,那么argv[0]存储的是空字符串)。

基本结构:

1.创建解析器
2.添加变量
3.解析变量

parser=argparse.ArgumentParser()
parser.add_argument()
args=parser.parse_args()

参数:

ArgumentParser :

参数列表:

  • description:如果调用termial的help,将展示出来,是对程序的注释
import argparse

parser=argparse.ArgumentParser(description="this is the test program")
parser.print_help()

在这里插入图片描述

  • prog:默认的时候ArgumentParser使用sys.argv[0]来作为help展示时候的程序名,当使用prog的时候会改变help展示的程序值:
import argparse

parser=argparse.ArgumentParser(prog="changed")
parser.print_help()

在这里插入图片描述

add_argument:

通过命令行向程序传递的变量有两种形式,一种是optional,一种是positional

positional:

import argparse

parser=argparse.ArgumentParser()
parser.add_argument("test",help="this is a positional argument")
args=parser.parse_args()
print(args.test)

测试结果:
在这里插入图片描述

optional:

import argparse

parser=argparse.ArgumentParser()
parser.add_argument("--test",help="this is optional argument")
args=parser.parse_args()
if args.test:
    print("optional_argument")

执行结果:
在这里插入图片描述
注意这里optional变量没有被赋值的时候,程序可以正常运行,这时optional变量的值为None,当optional变量被赋值后,程序会输出这个变量的值

同时optional变量可以有省略形式,这时使用一个单引号和一个字母:

import argparse

parser=argparse.ArgumentParser()
parser.add_argument("-t","--test",help="this is optional argument")
args=parser.parse_args()
if args.test:
    print("optional_argument")

在这里插入图片描述
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

参数列表:

  • name/flags:添加的变量的名字,也就是在add_argument()后双引号内的值,optional和positional这两种变量通过"-"来进行区分。

  • help:string类型,包含对变量的一个简单的描述,当用户在terminal调用help的时候,会显示在terminal中。

import argparse

parser=argparse.ArgumentParser()
parser.add_argument("test",help="this is the help message")
parser.parse_args()

在这里插入图片描述

  • default:所有的optional和部分的positional(当nargs为?或*的时候)类型的变量在命令行都可以省略,这个时候赋给变量default的值。
import argparse

parser=argparse.ArgumentParser()
parser.add_argument("--test",default=42)
args=parser.parse_args()
print(args.test)

在这里插入图片描述

  • type:argumentparser默认将terminal中的变量赋值为string类型,type会进行一步类型转换。
import argparse

parser=argparse.ArgumentParser()
parser.add_argument("i",type=int)
parser.add_argument("s")
args=parser.parse_args()
print(type(args.i))
print(type(args.s))

在这里插入图片描述

  • dest:变量别名
    当调用parser.add_argument()的时候,就是在为parser对象附加属性,这个属性的名字就由dest关键子决定,对于positional类型的变量,dest默认为add_argument()方法传入的第一个字符串,对于optional类型的变量,如果传入长字符串,dest的值是"–XXX"类型的字符串去掉"–“如果传入短字符串,dest的值是”-X"类型的字符串取消"-",所有的在字符串中间的"-“都会被转化为”_"

  • nargs:将部分传入变量打包成一个list返回。

可选值总共有五种:

1.argparse.REMAINDER
这时所有剩余的命令行变量都会被聚集进入一个list。
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('--foo')
>>> parser.add_argument('command')
>>> parser.add_argument('args', nargs=argparse.REMAINDER)
>>> print(parser.parse_args('--foo B cmd --arg1 XX ZZ'.split()))
Namespace(args=['--arg1', 'XX', 'ZZ'], command='cmd', foo='B')

parse_args():
将传入的string类型变量转化为一个namespace中的属性值,并返回这个namespace。

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> args = parser.parse_args(['--foo', 'BAR'])
>>> vars(args)
{'foo': 'BAR'}

参考:
https://docs.python.org/3.7/library/argparse.html#module-argparse

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
argparsePython标准库中的一个模块,用于解析命令行参数。它提供了一种简单而灵活的方式来处理命令行参数,并生成帮助信息。 argparse模块的主要特点包括: 1. 定义参数:argparse允许你定义需要的命令行参数,并指定它们的类型、默认值、帮助信息等。 2. 解析参数:argparse可以解析命令行参数,并将它们转换为Python对象,以便在程序中使用。 3. 自动生成帮助信息:argparse可以根据你定义的参数自动生成帮助信息,包括参数的使用方法、默认值、帮助文本等。 4. 支持位置参数和可选参数:argparse支持两种类型的参数,位置参数和可选参数。位置参数是必需的,而可选参数可以根据需要选择是否提供。 下面是一个简单的示例,演示了如何使用argparse解析命令行参数: ```python import argparse # 创建ArgumentParser对象 parser = argparse.ArgumentParser(description='Process some integers.') # 添加位置参数 parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') # 添加可选参数 parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') # 解析命令行参数 args = parser.parse_args() # 打印解析结果 print(args.accumulate(args.integers)) ``` 使用上述代码,你可以在命令行中输入一系列整数,并选择是求和还是找到最大值。例如: ``` $ python myprogram.py 1 2 3 4 5 15 $ python myprogram.py 1 2 3 4 5 --sum 15 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值