首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Python 命令行之旅:深入 argparse(二)

前言 在上一篇“深入 argparse (一)”的文章,我们深入了解了 argparse 的包括参数动作和参数类别在内的基本功能,具备了编写一个简单命令行程序的能力。...在 argparse ,选项参数前缀默认采用 Unix 命令行约定,也就是 -。...那么共享解析器就显得尤为必要,这样就可以少去重复代码。 我们可以这样做,在 base.py 定义一个父解析器,存放 AccessKey 相关参数配置,作为公用的解析器。...通过实现嵌套解析器,我们可以很容易地对这种子命令的形式进行解析。 在嵌套解析器,我们定义一个父解析器来作为整个命令行的入口,再分别定义N个子解析器来对应N个子命令,由此即可实现整个功能。...: parser 为解析器实例 namespace 存放解析结果 values 即命令行传入的参数值 option_string 为参数选项 在下面的例子,我们通过 --words 传入单词,并在自定义动作类中将其值转换为大写

1.3K20

Python 命令行之旅:初探 argparse

当你在程序定义需要哪些参数argparse 便会从 sys.argv 获取命令行输入进行解析,对正确或非法输入做出响应,也可以自动生成帮助信息和使用说明。...通过实例argparse.ArgumentParser,给定一些选填参数,我们就可以设置一个解析器: import argparse parser = argparse.ArgumentParser...( description='My Cmd Line Program', ) 定义参数 通过 ArgumentParser.add_argument 方法来为解析器设置参数信息,以告诉解析器命令行字符串的哪些内容应解析为哪些类型的...Python 对象,: # 添加 nums 参数,在使用信息显示为 num # 其类型为 int,且支持输入多个,且至少需要提供一个 parser.add_argument('nums', metavar...对于一些复杂的情况,比如各种类型参数参数前缀、参数组、互斥选项、嵌套解析、自定义帮助等等,我们都还没涉及探讨。 在下一篇文章,让我们来一起深入了解 argparse,感受它的魅力吧! ?

66720

Python 命令行之旅:初探 argparse

当你在程序定义需要哪些参数argparse 便会从 sys.argv 获取命令行输入进行解析,对正确或非法输入做出响应,也可以自动生成帮助信息和使用说明。...通过实例argparse.ArgumentParser,给定一些选填参数,我们就可以设置一个解析器: import argparse parser = argparse.ArgumentParser...( description='My Cmd Line Program', ) 定义参数 通过 ArgumentParser.add_argument 方法来为解析器设置参数信息,以告诉解析器命令行字符串的哪些内容应解析为哪些类型的...Python 对象,: # 添加 nums 参数,在使用信息显示为 num # 其类型为 int,且支持输入多个,且至少需要提供一个 parser.add_argument('nums', metavar...对于一些复杂的情况,比如各种类型参数参数前缀、参数组、互斥选项、嵌套解析、自定义帮助等等,我们都还没涉及探讨。 在下一篇文章,让我们来一起深入了解 argparse,感受它的魅力吧!

45610

Python 命令行之旅:深入argparse (一)

前言 在第一篇“初探 argparse”的文章,我们初步掌握了使用 argparse 的四部曲,对它有了一个基本的体感。但是它具体支持哪些类型的参数?这些参数该如何配置?...它常常用于将多个参数所对应的固定值都保存在同一个列表,相应的需要 dest 入参来配合,以放在同一个列表: 不指定 dest 入参,则固定值保存在以参数名命名的变量 >>> parser.add_argument...,那么 参数类别 就是告诉解析器这个参数的元信息,也就是参数是什么样的。...使用互斥参数首先通过 ArgumentParser.add_mutually_exclusive_group 在解析器添加一个互斥组,然后在这个组里添加参数,那么组内的所有参数都是互斥的。...在下一篇文章,我们来继续深入了解 argparse 的功能,如何修改参数前缀,如何定义参数组,如何定义嵌套解析器,如何编写自定义动作等,让我们拭目以待吧~ ?

67130

argparse------用于命令行选项、参数和子命令的解析器

formatter_class - 用于自定义帮助输出的类 prefix_chars - 前缀可选参数的字符集(默认值:' - ') fromfile_prefix_chars - 应该从前缀文件读取附加参数的一组字符...以确定如何在帮助消息显示程序的名称。这个缺省值几乎总是可取的,因为它将使帮助消息与在命令行上调用程序的方式匹配。...[-h] [--foo FOO]argparse.py: error: option --foo is required示例所示,如果一个选项被标记为required,那么如果该选项不在命令行,parse_args...parser_class - 用于创建子解析器实例的类,默认情况下是当前解析器的类(例如ArgumentParser)。 action - 当在命令行遇到这个参数时要采取的基本操作类型。...当一个参数被添加到组时,解析器就像对待一个普通的参数一样对待它,但是会在一个单独的组显示该参数以获取帮助消息。

6.8K20

Python 命令行之旅:使用 argparse 实现 git 命令

argparse 要实现子命令,那么之前介绍到的 嵌套解析器 必不可少 当用户键入子命令时,子命令所对应的子解析器需要作出响应,那么需要用到子解析器的 set_defaults 功能 针对 git add...cli 函数来作为统一的入口,它负责构建解析器,并解析命令行参数 我们还需要四个 handle_xxx 函数响应对应的子命令 则基本结构如下: import os import argparse from...实现 假定我们在 argparse-git.py[2] 文件实现我们的 git 程序。 构建解析器 我们需要构建一个父解析器,作为程序的根解析器,程序名称指定为 git。...能接收任意名称的关键字参数,这个参数值会存放于父解析器解析命令行参数后的变量。...在定义完父子解析器,并添加参数后,我们就需要对参数做解析,这项工作也是实现在 cli 函数: def cli(): ...

65620

argparse 的高级用法

cmd_instance.add_arguments(subparser) 这里我实例化了 command,而没有直接用 classmethod,是方便在实例化的时候传入一些根解析器相关的信息...这样我就实现了命令解析的解耦,与子命令有关的参数在自己的类的 add_argument 添加就可以了。...argparse 是拿到 sys.argv 之后按顺序看,如果找到一个参数就把结果对应这个参数的值赋好,如果找到一个子命令的名称则取得这个子命令的解析器 递归调用这个解析器去解析剩下的命令行参数。...也就是说如果没有匹配到这个子命令是不会执行任何该子命令的相关动作,也不会把这个子命令的参数加入到解析器。 而相同层级的子命令必然是互斥的,不可能存在同时匹配到多个子命令的情况。...比如 python cli.py greet goodbye 匹配到的是 greet 命令,而 goodbye 会被当作 greet 的参数在 greet 自己的解析器解析。

18540

Python 模块:argparse

formatter_class - 用于自定义帮助文档输出格式的类 prefix_chars - 可选参数的前缀字符集合(默认值:'-') fromfile_prefix_chars - 当需要从文件读取其他参数时...prog 默认情况下,ArgumentParser 对象使用 sys.argv[0] 来确定如何在帮助消息显示程序名称。这一默认值几乎总是可取的,因为它将使帮助消息与从命令行调用此程序的方式相匹配。...否则, ArgumentParse 将会看到两个 -h/--help 选项(一个在父参数中一个在子参数)并且产生一个错误。 注解 你在传``parents=``给那些解析器时必须完全初始化它们。...如果你在子解析器之后改变父解析器是,这些改变不会反映在子解析器上。 formatter_class ArgumentParser 对象允许通过指定备用格式化类来自定义帮助格式。...注意:如果它们长得像负数并且在解析器没有长得像负数的参数,位置参数必须以 - 开头: >>> parser = argparse.ArgumentParser(prog='PROG') >>> parser.add_argument

2.5K10

【Python爬虫实操】 如何在任务中高效处理命令参数

本文将介绍如何在Python中高效处理命令行参数,帮助更好地利用Python进行开发。  1.了解命令行参数的基本概念  命令行参数是在运行程序时由用户在命令行输入的参数。...2.使用argparse库处理命令行参数  Python标准库argparse模块提供了一个简单而强大的命令行参数解析器。...以下是一个使用argparse库处理命令行参数的示例:  ```python  import argparse  #创建一个解析器  parser=argparse.ArgumentParser(description...)  print(args.arg2)  ```  在上述示例,我们通过ArgumentParser类创建了一个解析器对象,然后使用add_argument方法定义了两个命令行参数。...可以利用argparse库提供的各种特性,优化命令行参数的处理过程,提升程序的用户体验和性能。  本文介绍了如何在Python中高效处理命令行参数

17860

Python 基础(二十一):argparse 模块

简介 argparse 模块主要用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册...optional arguments: -h, --help show this help message and exit 如果使用未定义的参数会报错,:执行命令 python test.py...-a,执行结果: usage: test.py [-h] test.py: error: unrecognized arguments: -a 接下来我们看一下如何自定义参数,因为上面示例 ArgumentParser...,看一下方法每一个参数的含义: prog:程序的名称(默认:sys.argv[0]) usage:描述程序用途的字符串(默认值:从添加到解析器参数生成) description:在参数帮助文档之前显示的文本...(默认值:无) epilog:在参数帮助文档之后显示的文本(默认值:无) parents:一个 ArgumentParser 对象的列表,它们的参数也应包含在内 formatter_class:用于自定义帮助文档输出格式的类

57320

Python 命令行之旅:使用 docopt 实现 git 命令

docopt 不同于使用 argparse 时需要考虑嵌套解析器、各类参数等问题,在使用 docopt 只需将我们要实现的 git 命令用接口描述先定义清楚即可。...程序结构 程序结构上,除了开头处定义接口描述外,其余和使用 argparse 实现 git 命令的结构是一样的: 命令行程序需要一个 cli 函数来作为统一的入口,它负责构建解析器,并解析命令行参数 我们还需要四个...五、实现 假定我们在 docopt-git.py[3] 文件实现我们的 git 程序。...对比 argparse 的实现版本,你会发现使用 docopt 来实现变得非常简单,子解析器参数类型什么的统统不需要关心!这可以说是 docopt 最大的优势了。...在下篇文章,将为大家介绍一个在 Python 界十分流行的命令行库 —— click。

38530

Python 的 argparse 模块的作用,以及分享一个通用代码模板

使用 argparse 模块,可以轻松编写用户友好的命令行界面。程序定义了它需要的参数argparse 就会找出如何从 sys.argv 解析出这些参数。...实现一个名为 config() 的函数,用于设置来自 argparse.ArgumentParser 的参数解析器对象。它负责定义和处理命令行参数。...argparse 模块对命令行接口的支持是围绕 argparse.ArgumentParser 实例构建的。它是参数规范的容器,具有适用于整个解析器的选项。...添加所有参数后,会调用 parser.parse_args() 来解析运行脚本时提供的命令行参数,并将提取的数据放入 argparse.Namespace 对象。...总的来说,这段代码使用 argparse 设置了一个参数解析器,定义了多个命令行参数及其类型、默认值和帮助信息,解析了所提供的参数,最终以字典形式返回。

9300

parser.add_argument()用法——命令行选项、参数和子命令解析器

argparse是一个Python模块:命令行选项、参数和子命令解析器。...通过在程序定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。...ArgumentParser() 对象 2、添加参数——调用 add_argument() 方法添加参数 3、解析参数——使用 parse_args() 解析添加的参数 2.1 创建一个解析器——创建...;此外,也可以继承 argparse.Action 自定义参数解析; nargs - 应该读取的命令行参数个数,可以是具体的数字,或者是?...help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息. metavar - 在 usage 说明参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称

1.5K20
领券