我正在使用 Python(版本 1.0.2)中的 Cmd2 模块来构建命令行界面(CLI)。
在我运行程序之后(这样我就在我的自定义 CLI 中),如果我想启用调试以便它显示错误的堆栈跟踪,我必须从 CLI 手动运行“set debug true”。
我想要的是一种在每次调用 CLI 时自动将“调试”标志设置为 true 的方法。我知道我可以将包含设置调试作为第一步的脚本传递给 CLI,但我希望交互式会话也具有这种行为。
有什么方法可以更改 Cmd2 中调试的默认值吗?
关于设置的cmd2
文档说(强调我的):
设置
设置为用户提供了一种机制来控制
cmd2
基于应用程序的行为。设置存储在您的子类的实例属性中,cmd2.Cmd
并且还必须出现在cmd2.Cmd.settable
字典中。开发人员可以为这些设置设置默认值,用户可以在运行时使用 set 命令修改它们。
因此,要默认启用该debug
设置,您只需将对象的debug
属性设置为. 例如,如果这是应用程序:cmd2.Cmd
True
import cmd2
class App(cmd2.Cmd):
@cmd2.with_argument_list()
def do_spam(self, args):
raise Exception("a sample exception")
你只需要做
app = App()
app.debug = True
现在,如果我从命令行运行应用程序,debug
将默认启用。
完整的 Python 代码:
import cmd2
class App(cmd2.Cmd):
@cmd2.with_argument_list()
def do_spam(self, args):
raise Exception("a sample exception")
if __name__ == '__main__':
import sys
app = App()
app.debug = True
sys.exit(app.cmdloop())
输入:
spam
输出:
Traceback (most recent call last):
File "[...]\venv\lib\site-packages\cmd2\cmd2.py", line 1646, in onecmd_plus_hooks
stop = self.onecmd(statement, add_to_history=add_to_history)
File "[...]\venv\lib\site-packages\cmd2\cmd2.py", line 2075, in onecmd
stop = func(statement)
File "[...]\venv\lib\site-packages\cmd2\decorators.py", line 69, in cmd_wrapper
return func(cmd2_app, parsed_arglist, **kwargs)
File "[...]/main.py", line 7, in do_spam
raise Exception("a sample exception")
Exception: a sample exception
EXCEPTION of type 'Exception' occurred with message: 'a sample exception'