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

为什么argparse自定义类型函数不能与nargs一起使用?

argparse是Python标准库中的一个模块,用于解析命令行参数。在argparse中,可以通过自定义类型函数来验证和转换命令行参数的值。而nargs参数用于指定一个参数应该消耗的命令行参数数量。

然而,自定义类型函数与nargs参数不能一起使用的原因是nargs参数需要知道每个参数应该消耗的命令行参数数量,而自定义类型函数并不能提供这个信息。自定义类型函数只负责验证和转换参数的值,而不关心具体的数量。

例如,如果我们定义了一个自定义类型函数来验证和转换日期参数,那么无法确定日期参数是一个还是多个。如果我们将nargs设置为一个正整数,则argparse期望解析指定数量的参数,而自定义类型函数无法满足这个需求。相反,如果将nargs设置为"*"或"+",则argparse期望解析任意数量的参数,但自定义类型函数无法确定如何处理多个参数。

因此,在argparse中,自定义类型函数和nargs参数是互斥的,不能同时使用。如果需要验证和转换命令行参数的值,并且希望指定参数的数量,可以考虑使用其他方法,如手动解析参数或使用其他库。

以上是关于为什么argparse自定义类型函数不能与nargs一起使用的解释。

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

相关·内容

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

action=’version’,需要定义version,使用时输出版本信息并退出。 自定义,通过定义一个argparse.Action子类来实现。实际上,上面的这些可选项都是通过这种形式定义的。...nargs关键字参数将一个动作与不同数目的命令行参数关联在一起nargs=N,一个选项后可以跟多个参数(action=’append’时,依然是一个选项后跟一个参数,只不过选项可以多次出现),参数的个数必须为...如果是一个字符串,那么Parser解析的时候会将它作为命令行传入值,使用type的值来进行转换类型,但是如果不是的话,就会使用定义的值而不进行类型转换。如果设置了nargs=’?’...或nargs=’*’,那么当没有参数赋值给该项时,会使用default定义的值。 而default=argparse.SUPPRESS时,则表示命令行中未出现某一项时,不会对它进行默认赋值。...6、type:用于类型检查和类型转换。 使用FileType可简化对文件的操作。还可以自定义函数,输入是一个字符串,输出是转换后的字符串。

13.3K10
  • Python 模块:argparse

    如果 fromfile_prefix_chars= 参数提供给 ArgumentParser 构造函数,之后所有类型的字符的参数都会被当成文件处理,并且会被文件包含的参数替代。...action - 当参数在命令行中出现时使用的动作基本类型nargs - 命令行参数应当消耗的数目。 const - 被一些 action 和 nargs 选择所需求的常数。...大多数内置类型函数可以当做 type 参数的值被直接使用: >>> parser = argparse.ArgumentParser() >>> parser.add_argument('foo',...为了方便的使用各种文件类型argparse 模块提供带有 mode,bufsize,encoding 和 errors 参数的 open() 函数的工厂化的 FileType。...当一个用户需要帮助时(通常在命令行使用 -h 或者 --help),这些帮助说明将会和每个参数一起显示。

    2.5K10

    python自学argparse模块

    所有的参数输入都是str类型,如果需要使用int类型的参数,通过关键参数type可以方便的实现 import argparse parser = argparse.ArgumentParser(description...int类型使用文件作为参数 还是上面的type参数,可以设定type值为文件,比如: type=argparser.FileType('r')) 直接对文件进行操作。...但是如果没有定义type,那么用default=1的话传输的参数是int,但是你自己自定义参数的话,就无法传入int类型了。...nargs的作用是用来限定输入这个参数的个数,默认情况下我们必须输入1个,使用'?'的话,就是允许不输入或者输入一个。'...最后使用的时候记得写到函数里: import argparse # 封装到函数里 def parse_args(): # 先实例化 parser = argparse.ArgumentParser

    1.5K10

    python包合集-argparse

    一、argparse简介   argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse 二、简单案例   简单使用...一个“-”的参数,例如:-n, 他其实相当于我们在liunx中使用的指令,一个自定义的指令。   ...", epilog="额外说明")   展示结果:    5、自定义指令的前缀:默认是"-" 和 "--",这里如果你不喜欢使用,也可以自通过该参数自己指定前缀,个人觉得没必要。   ...,常量类型,数组类型的参数的功能       注意1:使用action = store_true/store_false 时修饰的指令是不能赋值的,其对应的指令的值是布尔类型的       注意2:使用...      1.1 先来演示:使用action,保存布尔类型的指令的值:store_true/store_false:保存布尔类型的变量: # 导入 argparse 模块 import argparse

    39910

    【测试开发】python系列教程:argparse 模块

    为了简化参数解析,我们可以使用内置的argparse库,定义好各个参数类型后,它能直接返回有效的参数。...注意:如果直接运行程序,默认不读取该变量,要使用必须要进行传参,例如:python try.py --epochs nargs: 应该读取的命令行参数个数,可以是具体的数字,或者是?...号,当指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示...default: 指定参数时该参数的默认值。 type: 命令行参数应该被转换成的数据类型。 required: 是否为必选参数或可选参数。 help: 参数的帮助信息。...自定义参数解析; 2.

    17910

    如何利用Python学习linux命令?

    argparse, os 了解argparse模块 argparse是python的标准库,他可以使我们很友好的编写命令行界面,并且可以自动生成帮助文档和使用消息,还能在参数无效的时候发出错误。...argparse.ArgumentParse类参数理解 1. prog:改变应用的名字,我们可以使用`%(prog)s`引用应用的名字,默认的应用名字为文件名。...- nargs='*': 将所有的参数保存在列表中 - nargs='+': 将所有的参数保存在列表中,但是至少得有一个参数 - nargs=argparse.REMAINDER: 其余的参数全部保存在一个...list中 4. default: 如果没有传入这个参数,默认使用default参数的值 5. type: 接收到的参数会经过这个参数对应的函数处理。...- -d: 指定显示目录,如果指定,默认为当前目录。 首先我们使用 ArgumentParser 类来指定参数。

    81310

    python的argparse模块

    argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。...argparse使用比较简单,常用的功能可能较快地实现出来,下面我分几个步骤,以Python3为例,逐渐递增地讲述argparse的用法。1....print_name.pyusage: print_name.py [-h] --name NAMEprint_name.py: error: argument --name is required4. type:参数类型默认的参数类型是...8. nargs: 设置参数在使用可以提供的个数使用方式如下:parser.add_argument('-name', nargs=x)其中x的候选值和含义如下:值 含义N 参数的绝对个数(例如:...= argparse.ArgumentParser( description='nargs demo') parser.add_argument('-name', required

    1.2K20

    Python argparse标准库快速入门

    如果有需要的话,可以通过在构造函数中设置各种参数的方式来修改ArgumentParser类的行为。由于参数项比较多,所以官方文档建议我们使用关键字参数的方式来添加参数。...action - 当参数在命令行中出现时使用的动作基本类型nargs - 命令行参数应当消耗的数目。 const - 被一些 action 和 nargs 选择所需求的常数。...默认情况下nargs会按照action的类型来判断参数个数,store和store_const会读取后面的一个值作为参数。 const 这个参数需要和带有const的action来配合使用。...parser.add_argument('bar', type=argparse.FileType('w')) 甚至有需求的话,这里还可以使用我们自己的函数,只要它的参数是一个字符串,返回值是转换以后的值就可以...另外它还支持几个比较有用的特性: 如果参数比较长,可以使用等号来连接参数与值,例如-foo=bar。 如果参数是单字母长度的,可以将参数和值直接写在一起

    88910

    会用python把linux命令写一遍的人,进大厂有多容易?

    argparse, os 了解argparse模块 argparse是python的标准库,他可以使我们很友好的编写命令行界面,并且可以自动生成帮助文档和使用消息,还能在参数无效的时候发出错误。...argparse.ArgumentParse类参数理解 1. prog:改变应用的名字,我们可以使用`%(prog)s`引用应用的名字,默认的应用名字为文件名。...- nargs='*': 将所有的参数保存在列表中 - nargs='+': 将所有的参数保存在列表中,但是至少得有一个参数 - nargs=argparse.REMAINDER: 其余的参数全部保存在一个...list中 4. default: 如果没有传入这个参数,默认使用default参数的值 5. type: 接收到的参数会经过这个参数对应的函数处理。...- -d: 指定显示目录,如果指定,默认为当前目录。 首先我们使用 ArgumentParser 类来指定参数。

    65330

    会用python把linux命令写一遍的人,进大厂有多容易?

    argparse, os 了解argparse模块 argparse是python的标准库,他可以使我们很友好的编写命令行界面,并且可以自动生成帮助文档和使用消息,还能在参数无效的时候发出错误。...argparse.ArgumentParse类参数理解 1. prog:改变应用的名字,我们可以使用`%(prog)s`引用应用的名字,默认的应用名字为文件名。...- nargs='*': 将所有的参数保存在列表中 - nargs='+': 将所有的参数保存在列表中,但是至少得有一个参数 - nargs=argparse.REMAINDER: 其余的参数全部保存在一个...list中 4. default: 如果没有传入这个参数,默认使用default参数的值 5. type: 接收到的参数会经过这个参数对应的函数处理。...- -d: 指定显示目录,如果指定,默认为当前目录。 首先我们使用 ArgumentParser 类来指定参数。

    61120

    Python 命令行之旅:初探 argparse

    若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ ‍介绍 argparse 作为 Python 内置的标准库,提供了较为简单的方式来编写命令行接口。...Python 对象,如: # 添加 nums 参数,在使用信息中显示为 num # 其类型为 int,且支持输入多个,且至少需要提供一个 parser.add_argument('nums', metavar...parser 解析后所对应的属性名为 accumulate # 若不提供 --sum,默认值为 max 函数,否则为 sum 函数 parser.add_argument('--sum', dest=...不过这还远远不是 argparse 的全部面貌。对于一些复杂的情况,比如各种类型参数、参数前缀、参数组、互斥选项、嵌套解析、自定义帮助等等,我们都还没涉及探讨。...在下一篇文章中,让我们来一起深入了解 argparse,感受它的魅力吧! ?

    68320

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

    简介 argparse 模块主要用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册...使用 argparse 模块,我们可以轻松的编写出用户友好的命令行接口。 2....使用 我们先来看一个简单示例: import argparse # 创建解析对象 parser = argparse.ArgumentParser() # 解析 parser.parse_args()...metavar][, dest]) 定义单个的命令行参数应当如何解析,看一下参数说明: name or flags:一个命名或者一个选项字符串的列表,例如:-f,--foo action:当参数在命令行中出现时使用的动作基本类型...nargs:命令行参数应当消耗的数目 const:被一些 action 和 nargs 选择所需求的常数 default:当参数未在命令行中出现时使用的值 type:命令行参数应当被转换成的类型 choices

    60120

    python学习之argparse模块

    但是如果是选项的话,则设置为None nargs:命令行参数的个数, 一般使用通配符表示,其中,'?'...表示只用一个,'*'表示0到多个,'+'表示至少一个 default:默认值 type:参数的类型,默认是字符串string类型,还有float、int等类型 help:和ArgumentParser方法中的参数作用相似...使用方法:     1、导入argparse模块   import argparse     2、创建argparse对象   parser = argparse.ArgumentParser()    ...时,不使用任何值 [python] view plaincopy >>> parser.add_argument('u',nargs='*',default=argparse.SUPPRESS) >>...> parser.parse_args(''.split())   Namespace()   type: 使用这个参数,转换输入参数的具体类型,这个参数可以关联到某个自定义的处理函数,这种函数 通常用来检查值的范围

    1.9K20

    Python 命令行之旅:初探 argparse

    若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ ‍介绍 argparse 作为 Python 内置的标准库,提供了较为简单的方式来编写命令行接口。...当你在程序中定义需要哪些参数,argparse 便会从 sys.argv 中获取命令行输入进行解析,对正确或非法输入做出响应,也可以自动生成帮助信息和使用说明。...Python 对象,如: # 添加 nums 参数,在使用信息中显示为 num # 其类型为 int,且支持输入多个,且至少需要提供一个 parser.add_argument('nums', metavar...不过这还远远不是 argparse 的全部面貌。对于一些复杂的情况,比如各种类型参数、参数前缀、参数组、互斥选项、嵌套解析、自定义帮助等等,我们都还没涉及探讨。...在下一篇文章中,让我们来一起深入了解 argparse,感受它的魅力吧!

    47510
    领券