首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

argparse添加强制参数,可能没有add_subparsers

argparse是Python标准库中用于解析命令行参数和选项的模块。它提供了一种简单而灵活的方式来定义命令行接口,并能够自动生成帮助信息。

在argparse中,可以使用add_argument()方法来添加参数。默认情况下,所有的参数都是可选的,但有时候我们希望某些参数是必需的,即强制参数。要实现强制参数,可以使用required=True参数来指定。

下面是一个示例代码,演示了如何使用argparse添加强制参数:

代码语言:python
复制
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("required_arg", help="This is a required argument", type=int)
parser.add_argument("--optional_arg", help="This is an optional argument")

args = parser.parse_args()

在上面的代码中,"required_arg"是一个必需的参数,而"--optional_arg"是一个可选的参数。如果没有提供"required_arg"参数,argparse会显示错误信息并打印帮助信息。

关于add_subparsers,它是argparse中的一个子命令解析器,用于处理具有不同子命令的命令行接口。它允许我们在命令行中指定不同的子命令,并根据子命令执行相应的操作。如果你的命令行接口不需要子命令,那么就不需要使用add_subparsers。

总结起来,argparse可以通过设置required=True来添加强制参数,而add_subparsers用于处理具有不同子命令的命令行接口。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python:argparse用于命令行参数解析

add_argument添加参数 参数可以分为位置参数和选项参数: import argparse parser = argparse.ArgumentParser() parser.add_argument...代表接受0个或1个参数,当指定了参数但是没有参数值时,如果此时设置了const值,那么此时就会使用const的值。...,那么就会使用const的值,e参数由于没有指定,因此使用默认值,f参数时定义的任意个值,由于也没有传值给它,所以是一个空列表。...; help: 默认情况下,一个打印帮助的h参数已经自动添加; version: 打印版本号,需要同时指定version的值; extend:存储为一个列表,并将每个参数加到列表中。...add_subparsers可以添加子命令 import argparse parser = argparse.ArgumentParser( description="Test sub commond

2.6K30

python命令行库如何实现子命令共享参数

argparse中,子命令的实现是通过add_subparsers来实现的 import argparse def do_command_one(arg): print('command1...这个脚本文件声明了两个子命令:model和model2,model会有一个命令行参数--cmd1_option1,model2会有一个命令行参数--cmd2_option1,同时全局会有一个参数--foo...此外,使用set_defaults来设置了子命令的处理函数,以应对可能需要进行单独处理的情况。 唯一的问题是,全局参数的实现比价违背一般的习惯。...实现需求 需求本身是很简单的,最关键的一点就是子命令之间要共享部分全局参数 argparse SO上这个回答还挺不错的。...import argparse # Same main parser as usual parser = argparse.ArgumentParser() # Usual arguments which

85920

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

如果可能,一个参数将从命令行中使用,并作为单个项目生成。如果不存在命令行参数,则会生成默认值。注意,对于可选参数,还有另外一种情况——出现了选项字符串,但后面没有命令行参数。...所有当前的命令行参数都被收集到一个列表中。注意,使用多个nargs='*'的位置参数通常没有多大意义,但是使用nargs='*'的多个可选参数可能的。...此外,如果没有至少一个命令行参数,将生成错误消息。...parse_args()方法在这里很谨慎:位置参数可能只以-如果它们看起来像负数,并且解析器中没有看起来像负数的选项,那么:>>> parser = argparse.ArgumentParser(prog...ArgumentParser支持使用add_subparsers()方法创建这样的子命令。add_subparsers()方法通常不带参数调用,并返回一个特殊的操作对象。

6.8K20

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

可能会对 handle_status 的函数签名感到困惑,这里的 git 和 args 是怎么传入的呢?这其实是由我们自己控制的,将在本文最后讲解。...额外要做的是,要在子解析器 add_parser 上添加一个 pathspec 位置参数,且其数量是任意的: def cli(): ......额外要做的是,要在子解析器 commit_parser 上添加一个 -m/--message 选项参数,且要求必填: def cli(): ......在定义完父子解析器,并添加参数后,我们就需要对参数做解析,这项工作也是实现在 cli 函数中: def cli(): ......你是否想过,argparse 的四步曲虽然理解简单,但略微麻烦。有没有更简单的方式?如果我很熟悉命令行帮助语法,我能不能写个帮助字符串就把所有的命令行元信息给定义出来?

65420

【转】Python 模块简介 -- argparse

例如,要禁止parse_args时的参数默认添加,我们可以: >>> parser = argparse.ArgumentParser(argument_default=argparse.SUPPRESS...位置参数没有前缀,而可选参数需要加前缀(默认为’-‘) >>> parser.add_argument('bar') # 添加位置参数 >>> parser.add_argument('-f', '-...-foo') # 添加可选参数 action: 默认为 store store_const,表示参数为固定值,该固定值存放在 const 中: >>> parser = argparse.ArgumentParser...时,首先从命令行获得参数,若没有则从const获得,然后从default获得: >>> parser = argparse.ArgumentParser() >>> parser.add_argument...,如果没有指定该参数则默认为选项名去掉前缀后作为参数名,对于位置参数无效 >>> parser = argparse.ArgumentParser() >>> parser.add_argument('

2.5K00

用Click编写Python命令行工具

在本教程的最后,你会知道: 为什么click相比于argparse和optparse来说是一个更好的选择 如何用它创建一个简单的CLI 如何将强制命令行参数添加到您的脚本 如何解析命令行标志和选项 如何通过添加帮助...click vs argparse:一个更好的选择? 你可能正在看上面的代码示例,在想“这些东西是什么意思?”这正是我在使用argparse遇到的一个问题:它不直观,很难阅读。...我们没有实现任何帮助功能,但添加了--help选项,您将看到一个打印到命令行的基本帮助页面: ?...你可能已经猜到了,这次调用的位置就是我之前介绍的一个参数。 这是因为它是我们天气CLI的强制参数。 我们如何在Click中实现? 这很简单,我们使用一个名为参数的装饰器。 谁会想到?...以下是你所学到的: 为什么click是一个更好的选择相对argparse和optparse 如何用它创建一个简单的CLI 如何将强制命令行参数添加到您的脚本 如何解析命令行标志和选项; 如何通过添加帮助

3.3K10

在Python中创建命令行界面的最佳方式

根据程序的不同,这些参数可用于添加其他特性,如查看帮助文档、指定输出文件或启用测试特性,这些特性在正常使用时可能会出现问题。...处理错误情况:让用户确切地知道哪里出了问题 运行时状态:如果任务没有立即完成,您应该打印出当前的进度 使用argparse读取参数Argparse是一个用于解析命令行参数的Python标准库模块。...我们可能需要的一些参数是网页的域-domain或-d,日志输出到一个输出文件-ofile或-o的选项,可能还需要输出到控制台的特定行数-lines或-l的选项。...通过使用.add_argument,我们可以很容易地向argparse CLI添加额外的参数,该参数允许我们定义使用细节。...现在使用argparse添加额外的参数。如果没有指定需要哪些参数argparse将假定它们是可选的。你也可以设置参数的类型,对于——lines,我们取一个整数。

2.4K20

Python argparse标准库快速入门

如果想详细了解argparse的话,可以查看Python官方文档,目前已经出了中文版文档,极大的方便了我们中国开发者,虽然有些地方没有完整翻译,但是已经完全够用了。...可以看到argparse标准库其实用起来很简单,分成三个步骤: 创建ArgumentParser对象 使用add_argument方法添加参数 使用parse_args方法接受并解析对象 下面我们就依次来看看这些步骤吧...,和正则表达式里的概念差不多,后面的一个值会被读取,如果没有的话会从default读入。 +,后面的多个值会被读取,如果没有会抛出异常。 ?,后面的多个值会被读取,没有值的话也可以。...而bar参数修改了dest,所以底层属性名发生了变化,但是在帮助信息中并没有什么改变。...它不会因为未知参数报错, 而且会将所有不认识的参数存储成一个列表作为第二个返回值。 简单实例 扯了大半天,大家可能还是有点不会用argparse,不过其实只要看一个简单的例子就可以了。

85510

argparse 的高级用法

Python 里的 argparse 大家都不陌生,是用来解析命令行参数的标准库,它的用法大致是这样: import argparse parser = argparse.ArgumentParser...这看上去比 click 费劲多了,而且还只是拿到解析结果,没有处理,但这个缺点也让 argparse 更加灵活,我们可以控制它如何找到对应的处理方法。 继承和扩展,这不就是 OOP 的思想吗?...这样我就实现了命令解析的解耦,与子命令有关的参数在自己的类中的 add_argument 添加就可以了。...处理方法的路由 现在我们只是实现了子命令的参数添加,但还需要针对不同的子命令选择不同的处理方法。...也就是说如果没有匹配到这个子命令是不会执行任何该子命令的相关动作,也不会把这个子命令的参数加入到解析器中。 而相同层级的子命令必然是互斥的,不可能存在同时匹配到多个子命令的情况。

18140

Python 命令行参数的3种传入方式

body) except Exception as e: print(sys.argv) print(e) 一般我的 Python 脚本的启动函数就像上的例子一样,可能需要传入几个必要参数...,之后就可以给对象添加一些参数属性,最后只需要从属性从提取传入的参数进行使用即可。...上面的代码添加了3个参数添加参数的前两个字段很容易理解,--name 和 -n 都可以用来在命令行中使用,都表示了参数 name,这样后面使用 parse_args() 方法获取到所有参数之后,就可以使用...,比较特殊的是最后调用函数的时候是没有带上参数的,因为参数会自动通过命令行的形式传入。...小结:click 库也是一个非常人性化的命令行参数模块,它其实非常强大,强大到把所有的命令行参数可能涉及的情况都考虑到了,需要自己去探索。

90810

python自学argparse模块

='解析命令行参数') # 先不添加参数 args = parser.parse_args() # 打印一下所有参数 上面的例子运行后,由于没有添加任何参数,所以看不出什么。...另外加入参数的同时,help的内容也会自动添加。...此时再次使用-h 或 --help 看一个帮助,会自动加上添加参数,但是只有参数名,并没有说明 添加参数说明 调用add_argument()方法是,设置关键参数help,来添加参数说明 import...但是如果没有定义type,那么用default=1的话传输的参数是int,但是你自己自定义参数的话,就无法传入int类型了。...选项参数 像-h 和 --help 一样,也可以设置自己的选项参数。设置的时候短参数和长参数可以值设置一个,如果没有冲突的话建议都写上。

1.4K10

Python笔记:外部参数传入考察(一)argparse

3. argparse参数 现在,我们来考察一下argparse更为细节的一些用法。 1. help内容 在使用argparse库进行参数传递时,我们可以通过help来查询脚本的参数定义。...其信息包括两部分: 整体的参数说明,这部分内容在创建parser时传入; 局部每一个参数的说明,这部分内容在添加每一个参数时通过help参数进行传入。...另一方面,在参数添加时,如果同时存在简称-short_name以及完整名称--full_name时,namespace中的变量名会使用full_name,反之,如果二者只存在其一时,则会使用该名称。...后记 上述就是我对于使用argparse库进行参数传递的知识整理,算是结合了我的使用经验再补充上我能想到的一些可能会出现的问题进行的一个较为系统的知识整理。...其中肯定会有细节的知识点没有提到,不过一般来说应该是能cover住一般用户的绝大部分使用需求了。 如果有遗漏的话可以参考下述参考链接中的官方文档进行查询,也欢迎在留言区内进行补充。

4K21

Python3 初学实践案例(3)argparse 命令行参数库的使用

所以,我找一下有没有合适的库来做这个,有好些的还是。...最终我选择了自带的比较新的 argparse 库。还有第三方的更简洁的库,不过我没有使用。...添加一个必填的参数 我们用 parser.add_argument 来往分析器里面添加参数,上面我们已经添加了一个特殊的版权输出的参数。那么正常的添加普通参数,就是下面的方法了。...添加一个互相排斥的二选一的选填参数 上面添加的这些参数是可以满足很多场景,但是一个场景满足不了,比如,我需要 -m | -c 这两个参数只能出现一个,如果同时出现两个就不行。...group 然后往这个组里添加不同功能的参数即可。

1.5K90

python入门:argparse浅析 nargs=+作用

7、prefix_chars:options前的字符,默认为’-‘,可以添加其他字符,如’-+’,但是如果没有包括’-‘,那么对应的option如’-h’就无法解析。...特殊的是,对于可选项,如果命令行中出现了此可选项,但是之后没有跟随赋值参数,则此时给此可选项并不是赋值default的值,而是赋值const的值。 nargs=*,和N类似,但是没有规定列表长度。...如果nargs没有定义,则可传入参数的数量由action决定,通常情况下为一个,并且不会生成长度为一的列表。...时,可选项出现在命令行中,但之后并没有跟随赋值的参数,作为默认值传给此可选项。 5、default:默认值。...或nargs=’*’,那么当没有参数赋值给该项时,会使用default定义的值。 而default=argparse.SUPPRESS时,则表示命令行中未出现某一项时,不会对它进行默认赋值。

12.5K10

怎样学Python 第二十三课 模块化处理用户输入基础

大家好,今天让我们来了解一个非常有用的模块,我很久以前就没有意识到这一点,这个模块允许我们简单而有效地使用命令行参数,它不仅会为我们处理这些争论,而且如果事情不对,它会产生一个帮助页面。...’) 好的,现在我们有了parser,我们可以开始添加参数。...第2步:添加并处理你的参数 如果我们要解析参数,我们需要做一些参数,我们可以通过在parser上使用add_argument()方法将参数添加到parser。...我们将在parser中添加3个参数,然后我们将对它们进行一些处理,当我们添加参数时,我们有多个选项,我们将使用其中三个。...如果该标志没有提供任何内容,这就是它的最终值,非常简单。最后,我们设定dest。这是目的地的简称,当我们最终解析参数时,它将是结果变量的名称。

691100

Python解析命令行读取参数argparse模块

如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式)。...1) 一般形式 但是大多数情况下,脚本很可能需要多个参数,而且每次参数的类型用处各不相同,那么这个时候在参数添加标签表明参数的类型和用途便十分有用,而利用argparse模块可以很方便得实现这一目的...='verbose mode') # 添加--verbose标签,标签别名可以为-v,这里action的意思是当读取的参数中出现--verbose/-v的时候 # 参数字典的verbose建对应的值为True...3)位置参数(positional arguments) 位置参数与sys.argv调用比较像,参数没有显式的–xxx或者-xxx标签,因此调用属性也与sys.argv相同。...nargs还可以’*’用来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值;‘+’表示读取至少1个该位置参数。’?’表示该位置参数要么没有,要么就只要一个。

71020
领券