python中command是什么意思_Python:解析commandlin

这是一个非常棘手的问题…您可以很容易地使用argparse将操作“绑定”到命令行参数(例如,创建一个类,在以前创建的类上操作…)。这里有一个愚蠢的例子…(参数foo创建一个对象,参数栏修改foo创建的对象)。在from argparse import ArgumentParser,Action

class Foo(object):

def __init__(self,*args):

self.args=args

def __str__(self):

return str(self.args)

class FooAction(Action):

def __call__(self,parser,namespace,values,option_string=None):

setattr(namespace,self.dest,Foo(*values)) #Add Foo to the options...

class BarAction(Action):

def __call__(self,parser,namespace,values,option_string=None):

FooObj=getattr(namespace,'foo') #raises an error if foo isn't in namespace...

#In this way, BarAction is like a filter on the

#object created by foo.

FooObj.args=tuple(list(FooObj.args)+list(values)) #append to the list of args.

parser=ArgumentParser()

parser.add_argument(' foo',nargs='*',action=FooAction,help="Foo!")

parser.add_argument(' bar',nargs='*',action=BarAction,help="Bar! : Must be used after foo")

namespace=parser.parse_args(" foo Hello World bar Nice Day".split())

print (namespace)

print (namespace.foo)

但是,这与您的有点不同,因为使用argparse,-argument是不可能的,只有-a或{}。这对你来说可能已经是个破坏交易的因素了,我不确定。。。在

下一个困难是处理括号。。。[和{}。如果您可以将这些作为不同命令行选项的参数,那么您可能会没事……您可能可以设置第二个解析器来解析内部部分,但我以前从未尝试过类似的方法。。。(如果其他人对如何处理方括号有任何想法,我将非常感兴趣地听取他们的意见)。在

就optparse和{}而言,我非常确定您可以使用它们做任何事情,都可以使用argparse,这就是为什么我将它们排除在讨论之外。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值