[Python] argparse命令行解析器的使用

本文深入讲解Python的argparse模块,该模块用于简化命令行界面的编写。文章详细介绍了如何使用argparse创建解析器,添加参数,以及解析和操作参数的过程。通过实例演示,读者可以快速掌握argparse的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考了python文档argparse- 用于命令行选项,参数和子命令的解析器和一篇非常非常优秀的博客python命令行解析模块argpars

argparse模块可以轻松编写用户友好的命令行界面。该程序定义了它需要的参数,argparse 并将弄清楚如何解析它们sys.argvargparse 当用户给程序提供无效参数时,该模块还会自动生成帮助和使用消息并发出错误。

首先导入函数库:

import argparse

创建解析器

parser = argparse.ArgumentParser(description='What you want to say.')

通过argparse.ArgumentParser()函数创建一个 ArgumentParser对象,并将结果赋值给parser

ArgumentParser对象将包含将命令行解析为Python数据类型所需的所有信息。

最常用的参数是description。参数description可以被字符串赋值,用来描述解析器的功能,使用帮助时被打印。

ArgumentParser对象的其他参数如下,详细的介绍见文首提到的第二个链接:

  • PROG -程序的名称(默认:sys.argv[0]
  • usage - 描述程序用法的字符串(默认值:从添加到解析器的参数生成)
  • description - 参数help之前显示的文本(默认值:none
  • epilog - 参数help后显示的文本(默认值:none
  • parents - ArgumentParser还应包含其参数的对象列表
  • formatter_class - 用于自定义帮助输出的类
  • prefix_chars - 前缀可选参数的字符集(默认值:' - '
  • fromfile_prefix_chars -该组文件前缀字符从额外的参数应该读(默认值:None
  • argument_default -为参数的全局默认值(默认值:None
  • conflict_handler - 解决冲突选项的策略(通常是不必要的)
  • add_help -添加-h/–help选项解析器(默认值:True
  • allow_abbrev - 如果缩写是明确的,则允许缩写长选项。(默认值:True

添加参数

parser.add_argument('--cuda', type=int, default=-1,
                    help="Specify CUDA device (defaults to -1, which learns on CPU)")

调用parser.add_argument('--cuda',……)函数来添加参数,返回值为args.cuda

该函数最常用的参数是:

  • type:指定读入参数的类型。
  • default:缺省的时候的默认值。
  • help:打印帮助信息时候的字符串。

比如这里是指定参数名为cuda,类型typeint,缺省时的默认值default-1,帮助信息为字符串类型的Specify CUDA device (defaults to -1, which learns on CPU)

其他的参数还有下面这些,详细的介绍见文首提到的第二个链接:

  • action:指定应该如何处理命令行参数。
  • nargs:默认情况下 ArgumentParser对象将参数与一个与action一对一关联,通过指定 nargs可以将多个参数与一个action相关联。
  • choices:将命令行参数的值限定在一个范围内,超出范围则报错 。
  • required:指定命令行参数是否必需。
  • dest:允许自定义ArgumentParser的参数属性名称 。

解析参数

ArgumentParser通过该parse_args()方法解析参数 。这将检查命令行,将每个参数转换为适当的类型,然后调用相应的操作。在大多数情况下,这意味着Namespace将从命令行解析的属性构建一个简单的对象。

在脚本中,parse_args()通常会调用不带参数。

# 添加参数
parser.add_argument('--cuda', type=int, default=-1,
                    help="Specify CUDA device (defaults to -1, which learns on CPU)") 	
# 解析参数
args = parser.parse_args()		
# 参数操作
CUDA_DEVICE = get_device(args.cuda)

通过解析函数args = parser.parse_args()后可以对参数args.cuda进行操作,比如CUDA_DEVICE = get_device(args.cuda)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值