gpt4 book ai didi

python - 检查通过 python cmd 模块传递的参数

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:15 28 4
gpt4 key购买 nike

这是一个两部分的问题,请看下面:

  • 我需要创建某种控制台供测试人员用来手动运行某些命令! cmd模块好走吗?

下面是我目前使用 cmd 的代码模块,我只是想学习,到目前为止我有两个问题:

  • 为什么自动完成功能不起作用?如果我加倍 <TAB>我什么也没得到,光标只是向前移动。不是默认提供了自动完成功能吗?

  • 我是否必须为每个方法处理错误数量的参数?如果使用错误数量的参数调用方法,或者在应该使用参数调用但实际上没有调用方法时,我希望方法 - “帮助”文本自动显示。

.

class InteractiveConsole(cmd.Cmd):
""" Interactive command line """

def __init__(self):
cmd.Cmd.__init__(self)
self.prompt = "=>> "
self.intro = "Welcome to IRT console!"

def do_hist(self, args):
"""Print a list of commands that have been entered"""
print self._hist

def do_exit(self, args):
"""Exits from the console"""
return -1

def do_help(self, args):
"""Get help on commands
'help' or '?' with no arguments prints a list of commands for which help is available
'help <command>' or '? <command>' gives help on <command>
"""
# # The only reason to define this method is for the help text in the doc string
cmd.Cmd.do_help(self, args)

# # Override methods in Cmd object ##
def preloop(self):
"""Initialization before prompting user for commands.
Despite the claims in the Cmd documentaion, Cmd.preloop() is not a stub.
"""
cmd.Cmd.preloop(self) # # sets up command completion
self._hist = [] # # No history yet
self._locals = {} # # Initialize execution namespace for user
self._globals = {}

def postloop(self):
"""Take care of any unfinished business.
Despite the claims in the Cmd documentaion, Cmd.postloop() is not a stub.
"""
cmd.Cmd.postloop(self) # # Clean up command completion
print "Exiting..."

def precmd(self, line):
""" This method is called after the line has been input but before
it has been interpreted. If you want to modify the input line
before execution (for example, variable substitution) do it here.
"""
if line != '':
self._hist += [ line.strip() ]
return line

def postcmd(self, stop, line):
"""If you want to stop the console, return something that evaluates to true.
If you want to do some post command processing, do it here.
"""
return stop

def default(self, line):
"""Called on an input line when the command prefix is not recognized.
In that case we execute the line as Python code.
"""
try:
exec(line) in self._locals, self._globals
except Exception, e:
print e.__class__, ":", e

def emptyline(self):
"""Do nothing on empty input line"""
pass





def do_install(self, pathToBuild):
"""install [pathToBuild]
install using the specified file"""
if pathToBuild:
print "installing %s" % pathToBuild
else:
print "<ERROR> You must specify the absolute path to a file which should be used!"


def do_configure(self, pathToConfiguration):
"""configure [pathToConfiguration]
configure using the specified file"""
if pathToConfiguration:
print "configuring %s" % pathToConfiguration
else:
print "<ERROR> You must specify the absolute path to a file which should be used!"

最佳答案

来自 cmd documentation :

The optional argument completekey is the readline name of a completion key; it defaults to Tab. If completekey is not None and readline is available, command completion is done automatically.

你需要有 readline可用于制表符完成工作。

命令方法只接受一个 参数,您需要在命令方法本身中解析参数。您当然可以调用self.do_help()self.help_<cmd>()必要时的方法。

关于python - 检查通过 python cmd 模块传递的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17745432/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com