命令行从标准库改编为使用prompttoolkit而不是readline
ptkcmd的Python项目详细描述
ptkcmd公司
ptkcmd适应内置命令行使用提示工具包而不是readline的标准库模块
构造函数输入:
from ptkcmd import PtkCmd, Completion, complete_files
class MyCmd(PtkCmd):
prompt='MyPtkCmd$ ' #change the prompt
def __init__(self,stdin=None,stdout=None,intro=None,
interactive=True,do_complete_cmd=True,
default_shell=False,**psession_kwargs):
super().__init__(stdin,stdout,intro,interactive,
do_complete_cmd,default_shell,**psession_kwargs)
标准库中定义了stdin、stdout和intro命令行在
如果interactive为True,则将从PromptSession中使用prompt toolkit prompt()方法。 如果interactive为False,则提示将写入stdout并从stdin读取一行
如果do_complete_cmd为True,则将根据已知命令列表对每行的初始命令执行完成操作。 如果do_complete_cmd为False,则不会尝试完成初始命令。 无论哪种情况,都可以根据定义的任何“complete”方法尝试完成参数。在
如果default_shell为False,则接收不具有“do”方法的命令将导致向写入错误自.stdout. 如果default_shell为True,则命令将用作子流程.运行(). run()的shell输入将为False。在
如果提供了其他关键字参数,它们将传递给用于提示的PromptSession构造函数。 唯一不允许的PromptSession关键字参数是“completer”。在
定义了一个名为“mycmd”的代码段。 args输入是命令后输入的参数列表。在
^{pr2}$关于完成方法, prev_args=当前参数完成之前的参数 curr_arg=当前正在完成的参数。 curr_arg可以是空字符串,也可以是可完成参数列表中参数的开头。在
文档和完整的_事件在提示工具包中定义 文件
完成方法必须生成提示工具箱中定义的完成对象: 完成(文本,起始位置) 文本=建议完成 起始位置=非正数表示 从光标返回多少个字符 然后重写。在
complete_files(curr_arg,path=None)提供文件名完成符
键入'help mycmd'将显示do\u mycmd()的docstring。 要添加其他帮助主题,请定义帮助函数:
class MyCmd(PtkCmd):
...
def help_mytopic(self):
"""
This is a help topic named 'mytopic'.
All topics declared in this way will show up when the help
command is invoked.
Typing 'help mytopic' will execute the help function, which
typically will write some text to self.stdout
"""
self.stdout.write('You called help for mytopic\n')
- 项目
标签: