首页
学习
活动
专区
工具
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....也可以是

45410

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。

66120

讲解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

1.3K20

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.4K20

一文带你搞定自定义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文档和帮助,如果用户针对于某个特定类寻求帮助,那么所需参数就不会以正常形式来表达。

63260

Python argparse 模块

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

1K20

argparse 高级用法

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

20740

【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。

41310

Python小技巧:​args 和 kwargs 乐趣

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

52110

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:

91710

编程大神骚操作: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)软限制和硬限制,然后使用通过参数指定秒数和先前检索到硬限制来进行设置。

51920
领券