命令行从标准库改编为使用prompttoolkit而不是readline

ptkcmd的Python项目详细描述


ptkcmd公司

View API documentation

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')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何读取、验证和移动数据。csv文件?   用于在线蛇游戏的java解析scaing   java JavaFX:在窗口上移动元素(阶段)调整大小   mysql如何使用java中的IOUtils包在jsp中显示多个图像?   Java dateFormat不可解析日期异常   spring mvc java。执行单元测试时lang.AssertionError   java在一个webapp中运行多个调度器有什么问题吗?   JAVAlang.ArrayIndexOutofBounds异常:1未来。get()多线程   java使用MDC或spring boot中的任何过滤器屏蔽日志消息中的密码,而不使用logback。xml文件   与应用服务器的java AJP和SSL通信   java Hibernate更新列表中的特定对象   Java小程序:使用keylistener移动多边形   java访问是一个独立于MainActivity的进程   来自服务器的java重复密钥或完整性约束冲突消息:“列“volume”不能为null”   java是否有任何方法可以确保在Flink on job cancel with savepoint上通知所有检查点侦听器检查点完成?