我正在使用cmd
模块编写一个快速python脚本,它允许用户以基本url查询字符串格式输入文本命令和参数。这些提示将用以下内容进行回答:
commandname foo=bar&baz=brack
使用cmd,我似乎找不到重写哪个方法来影响参数line
传递给所有do_*
方法的方式。我想对这些值运行urlparse.parse_qs
,在每个do_*
方法中的行上调用它似乎很笨拙。在
在分离并解释precmd
之前,precmd
方法得到了整行代码,因此这对我来说行不通。我也不太熟悉如何在这样的类中放置一个装饰器,并且无法在不破坏作用域的情况下完成它。在
基本上,cmd的python文档如下所示
Repeatedly issue a prompt, accept input, parse an initial prefix off the received input, and dispatch to action methods, passing them the remainder of the line as argument.
我想创建一个方法,它将对“行的剩余部分”进行额外处理,并将生成的字典作为line
参数传递给成员函数,而不是在每个函数中解释它们。在
谢谢!在
可以重写
onecmd()
方法,如下例所示。onecmd()
方法基本上是原始cmd.py
的一个副本,但是在将参数传递给函数之前添加对urlparse.parse_qs()
的调用。在样本输出:
^{pr2}$这就是你想要达到的目标吗?在
下面是另一个可能的解决方案,它使用类修饰符来修改
cmd.Cmd
子类,基本上对所有do_*
应用一个装饰函数 该类方法:我很快就把这个拼凑在一起,它看起来像我想要的那样工作,但是,我 对任何陷阱或如何改进此解决方案的建议持开放态度。在
相关问题 更多 >
编程相关推荐