还有人不知道ArgumentParser命令行解析器——我不允许

2023-10-12 20:59

本文主要是介绍还有人不知道ArgumentParser命令行解析器——我不允许,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

👦👦一个帅气的boy,你可以叫我Love And Program
🖱 ⌨个人主页:l。Ve的个人主页
💖💖如果对你有帮助的话希望三连💨💨支持一下博主

在这里插入图片描述

一文搞懂ArgumentParser命令行解析器

  • 1 前言
  • 2 上才艺——ArgumentParser()
    • prog
    • usage
    • description
    • epilog
    • parents
    • formatter_class
    • prefix_chars
    • fromfile_prefix_chars
    • allow_abbrev
    • conflict_handler
    • add_help
    • exit_on_error

1 前言

没想到我会在这上面出差错,结果框框报错,找别的文章就甩一段翻译😂😂我还真没看明白,今天直接上实战搞懂他。

官方文档传送门


2 上才艺——ArgumentParser()

class argparse.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

  • prog:解释器名字,默认状态下为文件名,也就是说你可选择不输入。
import argparse
parser = argparse.ArgumentParser(prog='Program')
parser.print_help()
parser = argparse.ArgumentParser()
parser.print_help()

结果:

usage: Program [-h]Process Testoptional arguments:-h, --help  show this help message and exit
#——————————————————————————————————————————————————————————————————————————
usage: Add_command_Function.py [-h]optional arguments:-h, --help  show this help message and exit

usage

  • usage:描述程序用途的字符串,默认情况下他会输出[-h],如果你加上add_argument函数,他也会显示
parser = argparse.ArgumentParser(prog='Program',usage="我是usage,而且我还也可以用%(prog)s覆盖prog", description="Process Test")
parser.print_help()parser = argparse.ArgumentParser(prog='Program', description="Process Test")
parser.add_argument("-f",help="first thing")
parser.print_help()
usage: 我是usage,而且我还也可以用Program覆盖progProcess Testoptional arguments:-h, --help            show this help message and exit
#----------------------------------------------------------------------------
usage: Program [-h] [-f F]Process Testoptional arguments:-h, --help  show this help message and exit-f F        first thing

description

  • description:当你使用命令行不加参数时就会出现它

命令行输入python Add_command_Function.py

parser = argparse.ArgumentParser( description="大家好,我是description")
parser.print_help()

输出:

usage: Add_command_Function.py [-h] [-f F]大家好,我是descriptionoptional arguments:-h, --help  show this help message and exit

epilog

  • epilog:在参数帮助文档之后显示的文本
parser = argparse.ArgumentParser( description="大家好,我是description",epilog="我是结尾哦")
parser.print_help()

结果:

usage: Add_command_Function.py [-h]大家好,我是descriptionoptional arguments:-h, --help  show this help message and exit我是结尾哦

parents

👇👇传送至add_help

  • parents :理解为单个解析器通过此值来引用其他ArgumentParser 对象列表加到自己里面
parser = argparse.ArgumentParser( description="大家好,我是description",epilog="我是结尾哦",add_help=False)
parser.add_argument("-f",help="first thing",type=int)Two_parser = argparse.ArgumentParser(parents=[parser])
Two_parser.add_argument("-s",help="first thing")
Two_parser.parse_args(['-f', '2'])#命令行 : python Add_command_Function.py -s

结果:

usage: Add_command_Function.py [-f F]大家好,我是descriptionoptional arguments:-f F  first thing我是结尾哦

formatter_class

  • formatter_class :理解为对解析器内的内容进行一个合适的格式化格式,有四种格式,最常用的是RawDescriptionHelpFormatter RawTextHelpFormatter类。
  1. class argparse.RawDescriptionHelpFormatter:允许使用格式,默认情况下不会有换行
parser = argparse.ArgumentParser( description='''           this descriptionwas indented weirdbut that is okay''',epilog="我是结尾哦",add_help=False,formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("-f",help="first thing",type=int)parser.print_help()
#usage: Add_command_Function.py [-f F]#            this description
#            was indented weird
#            but that is okay
  1. class argparse.RawTextHelpFormatter:
这东西和上面具体啥差别呢??试了一下,这里不太严谨,因为没试出啥大区别,有人知道可以和大家分享一下,不过更推荐第二种,因为...人家描述的多😂😂🤣🤣
  1. class argparse.ArgumentDefaultsHelpFormatter:添加默认的值的信息到每一个帮助信息的参数
  2. class argparse.MetavarTypeHelpFormatter:显示加入命令行type类型(真鸡肋啊)
parser = argparse.ArgumentParser( description="大家好,我是description",epilog="我是结尾哦",add_help=False,formatter_class=argparse.MetavarTypeHelpFormatter)
parser.add_argument("-f",help="first thing",type=int)
parser.add_argument('bar', type=float)
parser.add_argument('-cc', type=float)
parser.print_help()
#usage: Add_command_Function.py [-f int] [-cc float] float#大家好,我是description#positional arguments:
#  float#optional arguments:
#  -f int     first thing
#  -cc float#我是结尾哦

prefix_chars

  • prefix_chars:通俗理解为你可以修改命令行默认参数的前缀,我们在大多程序下用的都是'-',这也是默认的情况,但是有了它你就可以修改默认值。
parser = argparse.ArgumentParser( description='''这是一个程序''',epilog="我是结尾哦",prefix_chars="+")
parser.add_argument("-f",help="first thing",type=int)

命令行用python Add_command_Function.py +f可以,但是依然可以用python Add_command_Function.py -f😡😡我不李姐

fromfile_prefix_chars

  • fromfile_prefix_chars:将命令存入一个文件中从而不需要在命令行打出来(如果说这个函数真的有一个参数最有用的话那就是它)
with open('args.txt', 'w') as fp:fp.write('-f\n1111\n-d\n1.222')
parser = argparse.ArgumentParser( description='''这是一个程序''',epilog="我是结尾哦",fromfile_prefix_chars='@')
parser.add_argument("-f",help="first thing",type=int)
parser.add_argument("-c",help="first thing",type=float)
parser.add_argument("-d",help="first thing",type=float)
args =parser.parse_args(['@args.txt'])
print(args.f,args.d)
#结果
#1111 1.222

allow_abbrev

  • allow_abbrev:如果缩写是无歧义的,则允许缩写长选项,啥意思呢?看看下面,默认开启状态下下面是不会报错的,会自动识别为–foonly,因为–foon被理解为它的缩写,False之后这种状态就不会被理解开始报错,如下代码所示:
parser = argparse.ArgumentParser(prog='PROG', allow_abbrev=False)
parser.add_argument("--foobar",help="first thing",type=int)
parser.add_argument("--foonley",help="second thing",type=float)
args = parser.parse_args(['--foon','1'])
print(args.foonley)
#usage: PROG [-h] [--foobar FOOBAR] [--foonley FOONLEY] [-dsc DSC]
#PROG: error: unrecognized arguments: --foon

conflict_handler

  • conflict_handler:非常好理解,有时候重写旧的有相同选项字符串的参数会更有用,重写旧的字符串时就用到此变量,意味着减少冲突(文档说通常不必要,相当鸡肋了)
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument("-f","--fist",help="first thing",type=int)
parser.add_argument("--fist",help="second thing",type=float)
#python Add_command_Function.py
#argparse.ArgumentError: argument --fist: conflicting option string: --fist
parser = argparse.ArgumentParser(prog='PROG', conflict_handler='resolve')
parser.add_argument("-f","--fist",help="first thing",type=int)
parser.add_argument("--fist",help="second thing",type=float)
#python Add_command_Function.py
#正常运行

add_help

☝☝传送至parents

  • add_help:为解析器添加一个 -h/–help 选项
    这个没啥多说的,就决定是否加一个help选项,但是需要注意的是要调用父解析器的话必须为Flase(见传送),若add_help为True则发生报错

exit_on_error

  • exit_on_error:3.9版本新增内容,可以理解为是否启用手动捕获错误,设为False启用。默认为True,直接返回报错。
parser = argparse.ArgumentParser(exit_on_error=False)
parser.add_argument("-f",help="first thing",type=int)
parser.add_argument("-c",help="first thing",type=float)
try:parser.parse_args('--integers',' a')
except argparse.ArgumentError:print('Catching an argumentError')
辛苦各位可以看到最后,此函数的用处还是相当多的,各种大型项目里面都可以看见,但是我搜到的都是直接翻译过来,看着有点懵,还不如看官方文档呢,在这里记录一下学习记录

这篇关于还有人不知道ArgumentParser命令行解析器——我不允许的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198434

相关文章

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

[情商-13]:语言的艺术:何为真实和真相,所谓真相,就是别人想让你知道的真相!洞察谎言与真相!

目录 前言: 一、说话的真实程度分级 二、说谎动机分级:善意谎言、中性谎言、恶意谎言 三、小心:所谓真相:只说对自己有利的真相 四、小心:所谓真相:就是别人想让你知道的真相 五、小心:所谓善解人意:就是别人只说你想要听到的话 前言: 何为真实和真相,所谓真相,就是别人想让你知道的真相!洞察谎言与真相! 人与人交流话语中,处处充满了不真实,完全真实的只是其中一小部分,这

ORA-25150:不允许对区参数执行ALTERING

在用PL/SQL工具修改表存储报错: 百度一下找到原因: 表空间使用本地管理,其中的表不能修改NEXT MAXEXTENTS和PCTINCREASE参数 使用数据自动管理的表空间,其中的表可以修改NEXT MAXEXTENTS和PCTINCREASE参数

C++入门(05-2)从命令行执行C++编译器_GCC

文章目录 GCC编译器1. 下载MinGW-w64,安装(不推荐)2. 使用MSYS2安装MinGW-w64(推荐)2.1 安装MSYS22.2 初始化和更新2.3 安装MinGW-w64编译器2.3 在MSYS2 Shell中导航到代码目录2.4 使用 g++ 编译2.5 运行可执行文件 GCC编译器 GCC(GNU Compiler Collection)是一个开源编译器集