我是Python的初学者。我想知道Argparse和JSON是否可以一起使用。比如说,我有变量p,q,r我可以将它们添加到argparse中——parser.add_argument('-p','--param1',help='xvariable',required=True)parser.add_argument('-q','--param2',help='yvariable',required=True)parser.add_argument('-r','--param3',help='zvariable',required=True)现在假设我想从JSON文件中读取相同的变量,是
argparse无法处理接收全局选项的子命令:importargparsep=argparse.ArgumentParser()p.add_argument('--arg',action='store_true')s=p.add_subparsers()s.add_parser('test')将有p.parse_args('--argtest'.split())工作,但在p.parse_args('test--arg'.split())上失败。有人知道python参数解析器可以正确处理子命令的全局选项吗? 最佳答案 您可以轻松地将此
我想让解析器像cmd[-axxx-bxxx]-cxxx-dxxx当使用-a时,我希望也使用-b。同样,如果使用-b,则也必须使用-a。-a和-b都不用也没关系。我该怎么做?我尝试过自定义操作,但效果不佳。 最佳答案 更好的设计是有一个带有两个参数的选项:parser.add_argument('-a',nargs=2)然后您要么指定带有2个参数的选项,要么根本不指定它。$script-a12或$script自定义操作(或后处理)可以将元组args.a拆分为两个单独的值args.a和args.b。
假设我有模块myscript.py;此模块是生产代码,通常称为%dir%>pythonmyscript.pyfoobar。我想扩展它以接受关键字参数。我知道我可以使用下面的脚本来获取这些参数,但不幸的是,必须使用来调用它%dir%>pythonmyscript.pymain(foo,bar)。我知道我可以使用argparse模块,但我不确定该怎么做。importsysdefmain(foo,bar,**kwargs):print'Calledmyscriptwith:'print'foo=%s'%fooprint'bar=%s'%barifkwargs:forkinkwargs.key
我正在尝试使用以下代码向我的脚本添加命令行选项:importargparseparser=argparse.ArgumentParser('Myprogram')parser.add_argument('-x','--one')parser.add_argument('-y','--two')parser.add_argument('-z','--three')args=vars(parser.parse_args())foo=args['one']bar=args['two']cheese=args['three']这是执行此操作的正确方法吗?此外,如何从IDLEshell运行它?我
我喜欢argparse模块。argparse.FileType也很有用,除非您希望默认值不是sys.std*因为即使您提供了默认输出文件也会创建值(value)。例如:parser.add_argument('--outfile',type=FileType('w'),default="out.txt")即使您使用--outfile指定文件,也会创建out.txt。我能想到的最好的是:classMagicFileType(object):def__init__(self,*args,**kwargs):#saveargs/kwargsandsetfiletypetoNoneself.f
我主要使用argparse在python中制作命令行脚本,我通常使用的习惯用法是将参数分配为对象的属性,然后将它们单独解析为与其属性名称匹配的变量。这似乎有点重复。有没有办法将它们全部分配到全局命名空间中并删除分配步骤;或者当某些python行为对我来说似乎违反直觉时经常出现的情况,一些聪明的python专家可以指出我不应该这样做或不想这样做的充分理由吗?我现在拥有的是:if__name__=="__main__":parser=argparse.ArgumentParser()parser.add_argument("--db",type=str,dest='db',nargs='?
我正在编写一个服务器查询工具,我有一些代码来解析最顶部的参数:#Parseargumentsp=argparse.ArgumentParser()g=p.add_mutually_exclusive_group(required=True)g.add_argument('--odam',dest='query_type',action='store_const',const='odam',help="OdamexMasterquery.")g.add_argument('--odas',dest='query_type',action='store_const',const='odas
我正在尝试为脚本创建一个可选参数,该参数可以不带任何值或2个值,仅此而已。你能用argparse完成这个吗?#desiredoutput:#./script.py-a-->works#./script.py-aval1-->error#./script.py-aval1val2-->works版本1--接受0或1个值:parser=argparse.ArgumentParser()parser.add_argument("-a","--action",nargs="?",const=True,action="store",help="dosomeaction")args=parser.
我使用的是互斥组,但我有多个选项可以加入其中一个互斥组。我希望我的用法看起来像这样:[--confCONF|--hostnameHOSTNAME--portPORT]知道如何完成这个吗?我尝试将参数组添加到互斥组,但互斥部分不适用于子组,它允许--conffile--hostnamehost--port22 最佳答案 不是使用argparse的答案,而是一个可能解决问题的方法:使用docopt而不是argparse会让你只写你的使用模式,让docopt自动解析和验证传递给你的程序的args。在你的情况下,prog_name(--co