我正在使用argparse出色的子解析器系统来制作一个接受许多不同命令的命令行程序。根据我的阅读,argparse在参数明确时自动接受参数的单字符缩写。我想让它对子解析器做同样的事情。如果我这样设置子解析器:foo_parser=subparsers.add_parser('foo')#...setupargumentsandhandler...bar_parser=subparsers.add_parser('bar')#...setupargumentsandhandler...然后我希望解析器接受myprogramfarg0作为myprogramfooarg0的明确缩写。但事实并
argparse包在处理命令行参数时做得很好。但是我想知道是否有任何方法可以让argparse检查文件扩展名(例如“.txt”)。这个想法是派生一个与argparse.FileType相关的类。我会对任何建议感兴趣。请记住,我的程序中有超过50个子命令,它们都有自己的CLI。因此,与在我的所有命令中添加一些丑陋的测试相比,我更感兴趣的是派生一个可以在每个命令中导入的类。非常感谢。#Asanexampleonewouldbeinterestedinturningthis...parser_grp.add_argument('-o','--outputfile',help="Outputf
从optparse切换到argparse后-我遇到了奇怪的错误。Argparse仅在不留空格的情况下解析参数:myScript.py-oOpt或者放一个等号:myScript.py-o=Opt它不能正常工作:myScript.py-oOpt这是我的argparse初始化:#!/usr/bin/envpython#togetdescriptionusethe-hflagimportargparse,os,sys#======================#Python2.7isexpected:ifsys.version_info[0]!=2orsys.version_info[1].
我正在尝试使用argparse传递参数列表,但我发现的唯一方法是为我要传递的每个参数重写选项:我目前使用的:main.py-targ1-aarg2我想:main.py-targ1arg2...这是我的代码:parser.add_argument("-t",action='append',dest='table',default=[],help="") 最佳答案 使用nargs:ArgumentParserobjectsusuallyassociateasinglecommand-lineargumentwithasingleacti
我知道将多个位置参数放入一个相互排斥的组中是没有意义的,因为你不能说谁是谁。但我需要在其中包含一个位置参数。我需要什么:$myprogram-husage:myprogram[-h][--deletevalue|--updatevalue|value]位置value是默认操作(类似于“--include”)。(没有参数的myprogram也必须有效)。我的第一次尝试(这行不通):parser=ArgumentParser()group=parser.add_mutually_exclusive_group()group.add_argument('--delete',metavar='
这个问题在这里已经有了答案:Pythonargparse-Addargumenttomultiplesubparsers(4个答案)关闭5年前。当使用argparse时,一些子命令需要相同的选项,我使用parents来避免在每个子命令中重复定义它们。脚本文件名:testarg.pyimportargparseparser=argparse.ArgumentParser(add_help=False)parser.add_argument('-H','--host',default='192.168.122.1')parser.add_argument('-P','--port',def
我很好奇使用argparse时幕后发生了什么。我检查过here和here,显然命名空间目前onlyexistsintheargparselibrary.可能我使用了错误的关键字来搜索SO/Google。也有可能我问的是一个毫无意义或显而易见的问题,但我们开始吧。当通过argparse在Python中捕获输入字符串时:>pythonpalindrome.py'Tacocat!?'运行下面的代码时,我希望通过指定parser.add_argument('string'...生成的命名空间充当单个输入字符串的缓冲区。我将字符串分配给“args”的下一行必须是我们第一次实际解析输入,产生与输入
有没有办法让argparse接受像HEAD(1)这样的任意数字参数?head-5test.txt相当于head-n5test.txt我目前的方法是使用parse_known_args()然后处理剩余部分,但我希望有更优雅的方法。 最佳答案 agrparse和optparse都不支持这个。 关于pythonargparse处理任意数字选项(如HEAD(1)),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我有一个使用argparse的程序。它需要1个必需的位置参数、1个可选的位置参数和1个标志参数。类似于:usage:test.py[-h][-aA]b[c]所以,我尝试使用这个:parser=argparse.ArgumentParser()parser.add_argument('-a')parser.add_argument('b')parser.add_argument('c',nargs='?',default=None)print(parser.parse_args())对于test.pyBC-aA和test.py-aABC效果很好。但是当我执行test.pyB-aAC时,它
为什么argparse不解析这些参数?--foo123bar使用parser=argparse.ArgumentParser()parser.add_argument('--foo',nargs='+')parser.add_argument('bar')出现以下错误:error:toofewarguments如果我先传递bar参数,它会起作用:bar--foo123现在,这本身并不算太糟糕。我可以先接受位置参数,只是这种行为与argparse为我们创建的帮助不一致,它指出bar应该放在最后:usage:argparsetest.py[-h][--fooFOO[FOO...]]bar那