我是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文件中读取相同的变量,是
我想让解析器像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='?
我正在尝试为脚本创建一个可选参数,该参数可以不带任何值或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
我有以下测试代码importargparseparser=argparse.ArgumentParser()parser.add_argument("--verbose",default=0,type=int)subparsers=parser.add_subparsers(dest="parser_name")parser_lan=subparsers.add_parser('car')parser_lan.add_argument("--boo")parser_lan.add_argument("--foo")parser_serial=subparsers.add_parser(
parser=argparse.ArgumentParser()parser.add_argument("-p","--pattern",help="Patternfile")args=parser.parse_args()现在可以从args中取回字符串"--pattern"了吗?我需要这个字符串,这样我就可以构建一个cmd列表来传递给Popen,比如Popen(['some_other_program',args.pattern.option_string,args.pattern],...)而无需重复它(并且必须在两个地方维护它)(Popen(['some_other_prog',