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

Subparsers.add_parser TypeError:__init__()获得意外的关键字参数'prog‘

Subparsers.add_parser TypeError:init()获得意外的关键字参数'prog'

这个错误是由于在使用argparse库中的Subparsers.add_parser()方法时传入了意外的关键字参数'prog'导致的。'prog'参数用于指定子命令的名称,但在该方法中并不接受该参数。

要解决这个问题,需要检查代码中使用Subparsers.add_parser()方法的地方,确保没有传入'prog'参数。如果传入了该参数,可以将其移除或更正为正确的参数。

以下是一个示例代码,展示了如何正确使用Subparsers.add_parser()方法:

代码语言:python
代码运行次数:0
复制
import argparse

# 创建解析器
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()

# 添加子命令
subparser = subparsers.add_parser('command1', help='Command 1 help')
subparser.set_defaults(command='command1')

# 解析命令行参数
args = parser.parse_args()

# 根据命令执行相应的操作
if args.command == 'command1':
    print('Running command 1')

在上述示例中,我们创建了一个解析器,并使用Subparsers.add_parser()方法添加了一个名为'command1'的子命令。然后,我们使用set_defaults()方法将'command'属性设置为'command1',以便在解析命令行参数后可以根据该属性执行相应的操作。

请注意,上述示例中没有传入'prog'参数,因为该方法不接受该参数。如果你的代码中有类似的错误,请检查并修正该问题。

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

相关·内容

python 模块argparse用法实

epilog - 命令行帮助的结尾文字   prog - (default: sys.argv[0])程序的名字,一般不需要修改,另外,如果你需要在help中使用到程序的名字,可以使用%(prog)..., default][, type][, choices][, required][, help][, metavar][, dest]) name or flags:是必须的参数,该参数接受选项参数或者是位置参数...(一串文件名) 不带'--'的参数     调用脚本时必须输入值     参数输入的顺序与程序中定义的顺序一致 '-'的参数     可不输入    add_argument("-a")     类似有...'--'的shortname,但程序中的变量名为定义的参数名 '--'参数     参数别名: 只能是1个字符,区分大小写     add_argument("-shortname","--name",...'B', 'C', 0])     required:通常-f这样的选项是可选的,但是如果required=True那么就是必须的了     nsrgs 用来指定参数的个数,可以是1,2,3....也可以是

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

    cli 函数来作为统一的入口,它负责构建解析器,并解析命令行参数 我们还需要四个 handle_xxx 函数响应对应的子命令 则基本结构如下: import os import argparse from...(prog='git') subparsers = parser.add_subparsers( title='These are common Git commands used...函数中,能接收任意名称的关键字参数,这个参数值会存放于父解析器解析命令行参数后的变量中。...额外要做的是,要在子解析器 add_parser 上添加一个 pathspec 位置参数,且其数量是任意的: def cli(): ......然后就直接轻松愉快地获取解析后的参数信息呢? 在下篇文章中,将为大家讲解另一个站在一个全新的思路,又无比强大的库 docopt。

    68320

    讲解TypeError: init() got an unexpected keyword argument "serialized_options &#

    例如,在某个类的初始化中使用了serialized_options关键字参数,但出现错误如下:plaintextCopy codeTypeError: __init__() got an unexpected...拼写错误:可能是因为在实例化时,关键字参数的拼写错误或大小写错误导致的。...参数传递错误:在实例化时,我们可能错误地传递了一个不期望的参数,例如将一个字典传递给类的初始化方法,而不是将要使用的关键字参数传递给该方法。...查阅相关文档以获取正确的初始化参数。检查关键字参数拼写:仔细检查代码中的关键字参数,确保其拼写和大小写与文档中的要求一致。...在这个示例中,我们只需删除错误的关键字参数即可:pythonCopy codemodel = NeuralNetwork(hidden_units=[64, 32, 16])结论当遇到TypeError

    2.7K20

    python学习之argparse模块

    下面给出一个例子,基本包括了常见的情形: import argparse def parse_args():     description = usage: %prog [options] poetry-file... epilog - 命令行帮助的结尾文字   prog - (default: sys.argv[0])程序的名字,一般不需要修改,另外,如果你需要在help中使用到程序的名字,可以使用%(prog)...(一串文件名) 不带'--'的参数     调用脚本时必须输入值     参数输入的顺序与程序中定义的顺序一致 '-'的参数     可不输入    add_argument("-a")     类似有...    调用脚本时必须输入值     参数输入的顺序与程序中定义的顺序一致 '-'的参数     可不输入    add_argument("-a")     类似有'--'的shortname,但程序中的变量名为定义的参数名...也正如上面所示,长参数名也是可选的。其实,dest 参数也是可选的。如果没有指定 dest 参数,将用命令行的参数名来对 options 对象的值进行存取。

    1.9K20

    一文带你搞定自定义unittest中测试用例的名称

    在之前的文章中,面试题:unittest加载测试用例名称必须以test开头,是否可以定制化 一文中,讲解了如何去修改测试用例的名称,当时的做法呢,是直接在源码中修改,但是每次去源码中修改...tests from module.TestClass %(prog)s module.Class.test_method - run specified test method %(prog...'MyTestSuite' %(prog)s MyTestCase.testSomething - run MyTestCase.testSomething %(prog)s MyTestCase...""" # Handle the __init__ in this package name = self....---- 这篇文章其实是之前文章的升级,但是由于,之前考虑的不足,导致了代码有一定的局限性,在本次修改后,可能暂时是满足了,但是如果还需要定制的时候,我们尽量不要直接改写类库的代码,而是在代码在外面进程封装改动后使用

    1.1K10

    python学习笔记6.7-简化数据结构的初始化过程

    我们每编写一个类的时候都需要编写一个初始化函数,那么如果编写的类当做数据结构来用,它们的初始化结构就是一样的,例如: class Stock: def __init__(self,name,shares...可以对上面的方法进行完善,对其添加对关键字参数的支持,这样表达更清晰,更方便编程,最好的选择就是对关键字参数做映射,这样它们就只能对应于定义在-fields中的属性名: class Structure:...Point(Structure): _fields = ['x','y'] p = Point(x=4,y=5) print(p.x,p.y) 打印输出: ACER 50 99 4 5 还可以利用关键字参数来给类添加额外的属性...Point(Structure): _fields = ['x','y'] p = Point(4,5) print(p.x,p.y) 从示例中可以发现:我们都是使用setattr()函数来将传递进来的属性参数添加到对应的属性上...尽管简化数据结构的几种方法都十分的实用,但是它的缺点就是会影响到IDE的文档和帮助,如果用户针对于某个特定的类寻求帮助,那么所需的参数就不会以正常的形式来表达。

    67160

    Python argparse 模块

    从这四个命令中我们可以学到一些概念: ls 命令在不接受任何参数时也是有作用的,它默认用于展示当前目录下的内容。 如果我们想它让提供非默认以外的功能,我们必须指定更多的参数。...但即使这样,我们仍然已经免费获得了帮助信息。...正如我们认为的一样,当我们使用长选项,输出结果仍然是一样的。 然而,我们的帮助信息对这一个新功能解释得不是很好,但这一点仍旧是可以通过修改脚本代码来修复的(通过 help 关键字)。...2: TypeError: '>=' not supported between instances of 'NoneType' and 'int' 开始的输出结果很理想,并且修复了之前的bug。...记住,默认情况下,如果一个可选参数没有被指定,它将得到 None 值,它不能进行整数比较(因此会报 TypeError 异常)。

    1.1K20

    argparse 的高级用法

    cli() 两者的区别在于 argparse 是统一解析得到参数值再自己处理,而 click 可以直接把参数值传给装饰的函数。后者的方式更有利于代码解耦,更容易维护。...这就涉及到给原来 greet 函数加一个参数,并改变函数的行为读取这个参数。...处理方法的路由 现在我们只是实现了子命令的参数添加,但还需要针对不同的子命令选择不同的处理方法。...argparse 是拿到 sys.argv 之后按顺序看,如果找到一个参数就把结果中对应这个参数的值赋好,如果找到一个子命令的名称则取得这个子命令的解析器 递归调用这个解析器去解析剩下的命令行参数。...添加参数是在 add_argument 里做的, 再次 IoC 一下: class Argument: def __init__(self, *args, **kwargs):

    26840

    Python小技巧:​args 和 kwargs 的乐趣

    另外,欢迎访问并关注他的博客: https://jl-zhenlaixiaowei.blog.csdn.net/ 我曾经和一个聪明的 Pythonista 结对编程,每次他输入带有可选或关键字参数的函数定义时....:         print(kwargs) 上面的函数需要至少一个叫做“必须的”参数,但是它也能接受额外的位置参数和关键字参数。...同样地,kwargs将收集额外的关键字参数作为一个字典,因为这个参数名字有**(双星号)前缀。 如果没有附加参数被传递给函数。args 和 kwargs 可以为空。...当我们调用带有参数的不同组合的函数时,你会看到在args和kwargs内部参数。 Python如何收集它们,根据它们是否为位置参数或者关键字参数。...## 转发可选或者关键字参数 有可能从一个函数到另一个函数传递可选或者关键字参数。 当你调用要转发参数的函数时,你可以通过使用解包参数操作符*和**。在你传递之前这也给你一个机会修改参数。

    54810

    【Python】Python日志无延迟实

    我在用python生成日志时,发现无论怎么flush(),文件内容总是不能实时写入,导致程序意外中断时一无所获。...以下是查到的解决方案(亲测可行): open 函数中有一个bufferin的参数,默认是-1,如果设置为0是,就是无缓冲模式。...在字符串前加b,转换成二进制 如果没用二进制打开文件会提示ValueEorror: 没把字符串转成二进制会提示:TypeError: a bytes-like object is required,...not ‘str’ 测试: class Logger(object): def __init__(self, log_path="default.log"): self.terminal...但是encode返回的是bytes型的数据,不可以和str相加,需要将‘\n’前加b。 (2)terminal.write函数参数需要为str类型,转化为str。

    43310

    Python3 错误和异常

    try语句按照如下方式工作; 首先,执行try子句(在关键字try和关键字except之间的语句) 如果没有异常发生,会忽略except子句,try子句执行后就结束。...也可以使用此关键字在代码中抛出特定的异常,如果这个关键字写在except里,并且没有指定要抛出的异常,那么这个raise 就会抛出这个陷阱里的异常,代码示例: try:     num=10/0 except...,这个参数也会随着异常信息打印出来,代码示例: i=0 j=1 if i!...def __init__(self, value):  # 这是初始化方法,也就是构造器             self.value = value  #这是这个类的属性         def __...str__(self):   # 类中的每个方法都需要有一个self参数,通过这个参数来获取类属性的值             return repr(self.value) >>> try:

    94010

    编程大神的骚操作:Python技巧小贴士

    ,会返回一个「TypeError」,提示生成器对象没有下标,但是我们可以用一个简单的方案来解决这个问题: import itertools s = itertools.islice(range(50)...只包含关键字参数的函数 (kwargs) 当我们使用下面的函数时,创建仅仅需要关键字参数作为输入的函数来提供更清晰的函数定义,会很有帮助: def test(*, a, b): pass test...("value for a", "value for b") # TypeError: test() takes 0 positional arguments... test(a="value", b...如你所见,在关键字参数之前加上一个「*」就可以解决这个问题。如果我们将某些参数放在「*」参数之前,它们显然是位置参数。...在限制 CPU 的运行时间时,我们首先获得该特定资源(RLIMIT_CPU)的软限制和硬限制,然后使用通过参数指定的秒数和先前检索到的硬限制来进行设置。

    53420
    领券