Parser 使用方法

这篇具有很好参考价值的文章主要介绍了Parser 使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文主要记录了在深度学习中,使用别人写的代码时,用来接收用户在命令行里指定传入模型参数的重要方法 parser

同时,本文也给出了简易的示例,方便读者快速开始(只想了解如何使用的话可以直接跳到 3. 使用方法4. 示例


1. 基本概念

argparse 模块可以让人轻松编写用户友好的命令行接口

  • 程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数
  • argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息

argparsepython 用于解析命令行参数和选项的标准模块,用于代替已经过时的 optparse 模块


2. 重要概念

2.1. ArgumentParser

argparse 模块对命令行接口的支持是围绕 argparse.ArgumentParser 的实例构建的

  • 它是参数规范的容器,并具有将解析器整体应用的选项

创建一个新的 ArgumentParser 对象,所有的参数都应当作为关键字参数传入

classargparse.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,allow_abbrev=True,exit_on_error=True)

每个参数简单的描述如下所示:

  • prog - 程序的名称
    • 默认值: os.path.basename(sys.argv[0]))
  • usage - 描述程序用途的字符串
    • 默认值:从添加到解析器的参数生成
  • description - 在参数帮助文档之前显示的文本
    • 默认值:无
  • epilog - 在参数帮助文档之后显示的文本
    • 默认值:无
  • parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
  • formatter_class - 用于自定义帮助文档输出格式的类
  • prefix_chars - 可选参数的前缀字符集合
    • 默认值:'-'
  • fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合
    • 默认值:None
  • argument_default - 参数的全局默认值
    • 默认值:None
  • conflict_handler - 解决冲突选项的策略
    • 通常是不必要的
  • add_help - 为解析器添加一个 -h/–help 选项
    • 默认值:True
  • allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项
    • 默认值:True
  • exit_on_error - 决定当错误发生时是否让 ArgumentParser 附带错误信息退出
    • 默认值:True

2.2. add_argument()

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

定义单个的命令行参数应当如何解析:

  • name or flags - 一个命名或者一个选项字符串的列表
    • 例如 foo-f, --foo
  • action - 当参数在命令行中出现时使用的动作基本类型
  • nargs - 命令行参数应当消耗的数目
  • const - 被一些 actionnargs 选择所需求的常数
  • default - 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值
  • type - 命令行参数应当被转换成的类型
  • choices - 一个参数的可允许值的序列
  • required - 此命令行选项是否可省略
  • help - 一个此选项作用的简单描述
  • metavar - 在使用方法消息中使用的参数值示例
  • dest - 被添加到 parse_args() 所返回对象上的属性名

2.3. parse_args()

ArgumentParser.parse_args(args=None, namespace=None)

将参数字符串转换为对象并将其设为命名空间的属性,返回带有成员的命名空间

  • args - 要解析的字符串列表
    • 默认值是从 sys.argv 获取
  • namespace - 用于获取属性的对象
    • 默认值是一个新的空 Namespace 对象

3. 使用方法

3.1. 创建一个解析器 argparse.ArgumentParser()

使用 argparse 的第一步是创建一个 ArgumentParser 对象:

parser = argparse.ArgumentParser(description='Process some integers.')

ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息

  • description
    • 大多数对 ArgumentParser 构造方法的调用都会使用 description= 关键字参数
    • 这个参数简要描述这个程度做什么以及怎么做
    • 在帮助消息中,这个描述会显示在命令行用法字符串和各种参数的帮助消息之间

3.2. 添加参数 parser.add_argument()

给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的

  • 通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象
  • 这些信息在 parse_args() 调用时被存储和使用
parser.add_argument('--input_path',default="input", type=str,help ='input files')
parser.add_argument('--output_path',default = "output", type=str,help='result dir.') 

这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象

  • 设置 python 文件的 input_path,默认为该目录下的 input 文件夹
  • 设置 python 文件的 output_path,默认为该目录下的 output 文件夹

3.3. 解析参数 parser.parse_args()

ArgumentParser 通过 parse_args() 方法解析参数

  • 它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作
  • 在大多数情况下,这意味着一个简单的 Namespace 对象将从命令行解析出的属性构建
args = parser.parse_args()
print (args.echo)

在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数


4. 示例

以下代码是一个 Python 程序,它获取一个整数列表并计算总和或者最大值:

import argparse

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 prog.py -h

python prog.py 1 2 3 4 --sum

总结

一份简单的使用说明

参考文档
参考博客文章来源地址https://www.toymoban.com/news/detail-431834.html

到了这里,关于Parser 使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Studio中SQLite的使用,主要介绍sqlite插入和读出图片(ViewBinder)的操作方法

    本人最近在写一个小的安卓项目,开发app过程中用到了安卓自带的sqlite。本文主要对sqlite图片操作进行介绍,其他存入文本之类的操作和普通数据库一样,众所周知,sqlite是一款轻型的数据库,以下先简单介绍一下sqlite,为后续做铺垫,有了解的大佬可以跳过此部分:   SQ

    2024年02月09日
    浏览(42)
  • Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。

    Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。 get_pins命令用于获取指定对象(Object)的引脚(Pin)列表。我们可以使用get_pins来获取具有特定命名约定的引脚(如CLOCK、RESET等),并通过对这些引

    2024年02月05日
    浏览(61)
  • U盘使用记录删除方法

    1:先在系统里添加环境变量“ devmgr_shownonpresent_devices ”值为“ 1 ” 2:打开设备管理器,然后查看隐藏设备,展开磁盘驱动器和储存卷两处,然后把跟U盘有关的删除掉。 3:鼠标单击“我的电脑”右键选择“管理”打开,然后把可移动存储相关的信息删除。 4: 把加入的系统

    2024年02月04日
    浏览(41)
  • Linux - tar命令使用方法记录

    (存档指tarball) -c, --create                     创建新存档 -x                                   从存档中提取文件 -z                                   通过gzip过滤存档 -v                                   显示详情,详细列出已处理文件 -f             

    2024年02月16日
    浏览(42)
  • python使用装饰器记录方法耗时

    python使用修饰器记录方法耗时,目的是每当方法执行完后,可以记录该方法耗时,而不需要在每个方法的执行前后,去创建一个临时变量,来记录耗时。 方式一(不推荐): 在每个方法的执行前后,去创建一个临时变量,来记录耗时,代码如下,缺点在于,如果有10个、10

    2024年02月13日
    浏览(50)
  • vivado中ila的使用方法记录

    在FPGA的开发中,当完成代码设计后,为了验证代码的准确性和各种不同条件下的可靠性,往往需要优先想到通过逻辑仿真进行相关验证。使用逻辑仿真进行验证虽然可以周密的考虑给出不同输入条件下的输出结果或交互结果,但是也其相对局限性:使用仿真需要设计人员写

    2024年02月16日
    浏览(49)
  • 记录--alova组件使用方法(区别axios)

    在我们写项目代码时,应该更加专注于业务逻辑的实现,而把定式代码交给js库或工程化自动处理,而我想说的是,请求逻辑其实也是可以继续简化的。 你可能会说,用axios或fetch api就够了啊,哪有什么请求逻辑,那可能是你还没有意识到这个问题,作为一个前端开发,你肯

    2024年02月05日
    浏览(49)
  • 记录微信小程序createIntersectionObserver()方法的使用

    最近做的微信小程序项目涉及到了曝光埋点需求,即页面上某一模块或者某一些模块被滑动显示在屏幕上的时候,需要做相关的埋点记录,想到了之前用过小程序提供的createIntersectionObserver()方法做过滚动渐变处理,所以记录下createIntersectionObserver()的使用方法。 createIntersect

    2024年02月08日
    浏览(99)
  • 瑞芯微开发工具AndroidTools/RKDevTool使用方法记录

    Firefly | 让科技更简单,让生活更智能 Windows开发环境或者Linux(Ubuntu)开发环境 Windows开发环境需安装《R K 驱动助手》 本文所提到的所有程序及驱动皆可在firefly官方wiki中下载 分区烧录 把搭载瑞芯微芯片的开发板使用公对公USB数据线接入Windows电脑(最好接USB3.0接口)如图所

    2024年02月06日
    浏览(59)
  • 记录几个Hudi Flink使用问题及解决方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:https://www.captainai.net/dongkelun 如题,记录几个Hudi Flink使用问题,学习和使用Hudi Flink有一段时间,虽然目前用的还不够深入,但是目前也遇到了几个问题,现在将遇到

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包