我想要一个带有--action=标志的程序,其中有效的选择是dump和upload,upload是默认值。如果(且仅当)dump被选中,我希望还有一个--dump-format=选项。有没有办法使用argparse来表达这一点,还是我只需要接受所有参数并自己做逻辑。 最佳答案 argparse模块提供了一种无需自己实现的方法必要性检查。下面的示例使用“子解析器”或“子命令”。我为“转储”实现了一个子解析器,为“格式”实现了一个。importargparseparser=argparse.ArgumentParser()parser.
我有一个支持参数列表的可选参数。我的意思是,它应该支持:-f12-f123但不是:-f1-f1234有没有办法在argparse中强制执行此操作?现在我使用nargs="*",然后检查列表长度。编辑:根据要求,我需要的是能够定义一系列可接受的参数数量。我的意思是,说(在示例中)2或3个args是正确的,但不是1或4或任何不在2..3范围内的东西 最佳答案 您可以使用customaction来执行此操作:importargparsedefrequired_length(nmin,nmax):classRequiredLength(ar
我正在创建一个python脚本,我希望有一个参数来控制您获得多少搜索结果作为输出。我目前已将参数命名为--head。这是我希望它拥有的功能:当--head未在命令行中传递时,我希望它默认为一个值。在这种情况下,一个相当大的,比如80当--head没有任何值传递时,我希望它默认为另一个值。在这种情况下,一些有限的东西,比如10当--head传递一个值时,我希望它存储它传递的值。下面是一些描述问题的代码:>>>importargparse>>>parser=argparse.ArgumentParser()>>>parser.add_argument('-h','--head',dest=
我正在阅读argparse模块。我被metavar和action的含义卡住了>>>parser.add_argument('integers',metavar='N',type=int,nargs='+',...help='anintegerfortheaccumulator')>>>parser.add_argument('--sum',dest='accumulate',action='store_const',...const=sum,default=max,...help='sumtheintegers(default:findthemax)')我可能错过了,但从我阅读的内容来
我有这段代码,我通常很满意:importargparseservers=["ApaServer","BananServer","GulServer","SolServer","RymdServer","SkeppServer","HavsServer","PiratServer","SvartServer","NattServer","SovServer"]parser=argparse.ArgumentParser(description="Aprogramtoupdatecomponentsonservers.")group=parser.add_mutually_exclusiv
我一直在这里和一般情况下搜索很多子解析器示例,但似乎无法弄清楚这个看似简单的事情。我有两种var类型,其中一种有约束,所以认为subparser是要走的路。例如-t允许“A”或“B”。如果用户通过“A”,那么他们还需要进一步指定它是“a1”还是“a2”。如果他们只通过“B”,那么什么都不会。我可以这样做并让argparse返回我传递了什么类型的“A”还是只是“B”?以下似乎可行,但由于某种原因在子解析之后传递任何内容时会中断。例如来自linux终端>>pythontest01.py-tAa1-v61错误...usage:test01.pya1[-h]test01.pya1:error:
我想使用argparse打开文件进行读取。在cmd中它必须看起来像:my_program.py/filepath这是我的尝试:parser=argparse.ArgumentParser()parser.add_argument('file',type=file)args=parser.parse_args() 最佳答案 查看文档:https://docs.python.org/3/library/argparse.html#typeimportargparseparser=argparse.ArgumentParser()pars
我认为nargs='*'足以处理可变数量的参数。显然不是,我不明白这个错误的原因。代码:p=argparse.ArgumentParser()p.add_argument('pos')p.add_argument('foo')p.add_argument('--spam',default=24,type=int,dest='spam')p.add_argument('vars',nargs='*')p.parse_args('12--spam889'.split())我认为生成的命名空间应该是Namespace(pos='1',foo='2',spam='8',vars=['8','9
是否可以查看argparsechoices以不区分大小写的方式?importargparsechoices=["win64","win32"]parser=argparse.ArgumentParser()parser.add_argument("-p",choices=choices)print(parser.parse_args(["-p","Win32"]))结果:usage:choices.py[-h][-p{win64,win32}]choices.py:error:argument-p:invalidchoice:'Win32'(choosefrom'win64','win
我正在尝试编写一个脚本来接受多个输入源并对每个输入源执行一些操作。像这样的./my_script.py\-iinput1_urlinput1_nameinput1_other_var\-iinput2_urlinput2_nameinput2_other_var\-iinput3_urlinput3_name#noticeinputX_other_varisoptional但我不太清楚如何使用argparse来做到这一点。似乎已设置为每个选项标志只能使用一次。我知道如何将多个参数与单个选项(nargs='*'或nargs='+')相关联,但这仍然不允许我使用-i标志多次。我该怎么做呢?