草庐IT

ArgParse

全部标签

python - 为什么 argparse 会给我一个列表中的列表?

我刚刚注意到argparse中的一个行为让我感到困惑(我想我以前从未将它用于愚蠢的文件列表):importargparseparser=argparse.ArgumentParser()parser.add_argument('multi',action='append',nargs='+')print(parser.parse_args())这给了我输出:~$./testargs.pyfoobarbazNamespace(multi=[['foo','bar','baz']])~$我希望multi是['foo','bar','baz'],而不是列表中的列表。按原样,我必须在处理之前获

python - 导入错误 : No module named argparse

我正在尝试运行Python程序,但出现错误ImportError:Nomodulenamedargparse我找到了问题“argparsePythonmodulesincli”在StackOverflow上并尝试了第一条评论,即运行命令python-c"importargparse;printargparse"导致对我来说,机器上似乎安装了Python2.7(我不是管理员),并且还存在argparse模块。所以我想知道为什么找不到该模块。在另一台机器上,脚本按应有的方式运行。在上面提到的帖子中,有评论可能sys.path已损坏。我不知道这意味着什么,也不知道如何改变它的值(value)

Python Argparse 有条件地需要参数

我已经做了尽可能多的研究,但我还没有找到使某些命令行参数仅在某些条件下才需要的最佳方法,在这种情况下,只有在给出其他参数的情况下。以下是我想要在非常基本的层面上做的事情:p=argparse.ArgumentParser(description='...')p.add_argument('--argument',required=False)p.add_argument('-a',required=False)#onlyrequiredif--argumentisgivenp.add_argument('-b',required=False)#onlyrequiredif--argum

python - Sphinx 和 argparse - 自动记录命令行脚本?

我正在构建一个Python包,并使用Sphinx创建文档。除了我的包代码之外,我还包含了许多使用argparse的命令行Python脚本。我想知道是否有办法让Sphinx自动记录这些脚本?最终目标将是一个pretty-print的脚本列表,以及相关的帮助打印、参数和选项。需要明确的是,我正在寻找一种预先存在的方法来执行此操作,而不是自己实现此操作的方法。这并不像我通常在S.O.上问的那样具体,如果有更合适的S.E.发布此问题的网站,请告诉我。 最佳答案 使用sphinx-argparse扩展:http://sphinx-argpar

python - 基于argparse的调用函数

我是python新手,目前正在使用它。我有一个脚本可以对设备进行一些API调用。我想扩展功能并根据调用脚本时给出的参数调用不同的函数。目前我有以下:parser=argparse.ArgumentParser()parser.add_argument("--showtop20",help="listtop20byapp",action="store_true")parser.add_argument("--listapps",help="listallavailableapps",action="store_true")args=parser.parse_args()我也有一个defs

Python:argparse.Namespace 对象的类型提示

有没有办法让Python静态分析器(例如,在PyCharm中,其他IDE中)在argparse.Namespace对象上获取Typehints?示例:parser=argparse.ArgumentParser()parser.add_argument('--somearg')parsed=parser.parse_args(['--somearg','someval'])#type:argparse.Namespacethe_arg=parsed.somearg#如果我删除内联注释中的类型声明,PyCharm不会提示,但它也不会拾取无效属性。例如:parser=argparse.Ar

python - 如何传递 argparse 参数以充当 kwargs?

我有一个类定义如下classM(object):def__init__(self,**kwargs):...do_something我有argparse.parse_args()的结果,例如:>args=parse_args()>printargsNamespace(value=5,message='test',message_type='email',extra="blah",param="whatever")我想传递此命名空间的值(message_type除外)以创建类M的实例。我试过了M(args)但是出错了TypeError:__init__()takesexactly1arg

python - argparse 子解析器整体帮助输出

我的argparse在顶层只有3个标志(store_true),其他一切都通过子解析器处理。当我运行myprog.py--help时,输出会显示所有子命令的列表,例如正常的{sub1,sub2,sub3,sub4,...}。所以,默认设置很好......我通常不记得我需要的确切子命令名称及其所有选项。所以我最终做了2次帮助查找:myprog.py--helpmyprog.pysub1--help我经常这样做,所以我决定把它塞进一步。我宁愿让我的顶级帮助输出一个巨大的摘要,然后我手动滚动列表。我发现它要快得多(至少对我来说)。我使用的是RawDescriptionHelpFormatte

python - Argparse"ArgumentError : argument -h/--help: conflicting option string(s): -h, --help"

最近在学习argparse模块,代码下方出现Argument错误importargparseimportsysclassExecuteShell(object):defcreate(self,args):"""aaaaaaa"""print('aaaaaaa')returnargsdeflist(self,args):"""ccccccc"""print('ccccccc')returnargsdefdelete(self,args):"""ddddddd"""print('ddddddd')returnargsclassTestShell(object):defget_base_pa

python argparse : unrecognized arguments

当我运行parsePlotSens.py-sbwhehe时,它说hehe是一个无法识别的参数。但是,如果我运行parsePlotSens.pyhehe-sbw,就可以了。理想情况下,我希望它适用于这两种情况。有什么建议吗?以下是我的代码:if__name__=='__main__':parser=argparse.ArgumentParser(prog='parsePlotSens');parser.add_argument('-s','--sort',nargs=1,action='store',choices=['mcs','bw'],default='mcs',help=sort