当前位置: 首页 > news >正文

Python Module — prompt_toolkit CLI 库

目录

文章目录

  • 目录
  • prompt_toolkit
  • 示例化
  • 历史记录
  • 热键
  • 自动补全
  • 多行输入
  • Python 代码高亮
  • 自定义样式

prompt_toolkit

prompt_toolkit 是一个用于构建 CLI 应用程序的 Python 库,可以让我们轻松地构建强大的交互式命令行应用程序。

  • 自动补全:当用户输入命令时,会自动匹配已知的命令,以提供更快的输入体验。
  • 历史记录:保存用户以前输入的所有命令,并在需要时进行检索。
  • 多行输入:支持用户输入多行命令,并在适当的位置换行。
  • 基于历史记录的热键:可以为特定的命令或操作绑定热键,以便用户可以通过按键来执行操作。
  • 样式定制:可以通过使用 prompt_toolkit 提供的组件和 API 来自定义命令行应用程序的外观和行为。

除此之外,prompt_toolkit 还支持 ANSI 转义序列,可以在控制台中创建彩色的文本和界面元素。prompt_toolkit 还可以通过支持异步输入和输出,使得处理 I/O 密集型任务变得更加高效。

示例化

from prompt_toolkit import promptwhile 1:user_input = prompt('>')print(user_input)

历史记录

from prompt_toolkit import prompt
from prompt_toolkit.history import FileHistorywhile 1:user_input = prompt('>', history=FileHistory('history.txt'),)print(user_input)

热键

from prompt_toolkit import prompt
from prompt_toolkit.history import FileHistory
from prompt_toolkit.auto_suggest import AutoSuggestFromHistorywhile 1:user_input = prompt('>', history=FileHistory('history.txt'),auto_suggest=AutoSuggestFromHistory(),)print(user_input)

自动补全

from prompt_toolkit import prompt
from prompt_toolkit.history import FileHistory
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.contrib.completers import WordCompleterSQLCompleter = WordCompleter(['select', 'from', 'insert', 'update', 'delete', 'drop'],ignore_case=True)while 1:user_input = prompt('SQL>', history=FileHistory('history.txt'),auto_suggest=AutoSuggestFromHistory(),completer=SQLCompleter,)print(user_input)

多行输入

from prompt_toolkit import prompt
from prompt_toolkit.history import FileHistory
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.contrib.completers import WordCompleterSQLCompleter = WordCompleter(['select', 'from', 'insert', 'update', 'delete', 'drop'],ignore_case=True)while 1:user_input = prompt('SQL>', history=FileHistory('history.txt'),auto_suggest=AutoSuggestFromHistory(),completer=SQLCompleter,multiline=True,)print(user_input)

Python 代码高亮

Pygments 是一个提供语法高亮的库,内建支持超过 300 种语言。

from pygments.lexers.python import PythonLexer  # Python 词法分析器
from pygments.style import Style as PygmentsStyle  # 颜料词法分析器
from pygments.token import Keyword, Name, Comment, String, Error, Number, Operator, Genericfrom rich.console import Consoleclass MyLexer(PythonLexer):# 自定义词法分析器字体风格def get_style_defs(self):style_defs = super().get_style_defs()style_defs += "\n" + PygmentsStyle.from_dict({Keyword: '#ff79c6 bold',                    # 关键字Name.Function: '#bd93f9 bold underline',    # 函数名Name.Class: '#bd93f9 bold',                 # 类名Name.Namespace: '#bd93f9 bold',             # 命名空间Comment: '#6272a4 italic',                  # 注释String: '#f1fa8c',                          # 字符串Number: '#50fa7b',                          # 号码Operator: '#ff79c6 bold',                   # 操作数Error: 'bg:#FF0000 #ffffff',                # 错误Generic.Heading: '#bd93f9 bold',            # 常规Generic.Subheading: '#bd93f9 bold underline',Generic.Emph: 'italic',Generic.Strong: 'bold',Generic.Prompt: 'bold',}).as_pygments()return style_defslexer = PygmentsLexer(MyLexer)           # 颜料词法分析器

自定义样式

style = Style.from_dict({               # 定义样式"prompt": "bold #50fa7b","input": "#f8f8f2","output": "#f8f8f2","highlighted": "bg:#44475a #f8f8f2","separator": "#6272a4","error": "#ff5555 bold","info": "#8be9fd",
})session = PromptSession(history=history, completer=completer, auto_suggest=auto_suggest, lexer=lexer, style=style)
http://www.lryc.cn/news/43492.html

相关文章:

  • springboot mybatis-plus 调用 sqlserver 的 存储过程 返回值问题
  • 【0180】PG内核读取pg_hba.conf并创建HbaLine记录(1)
  • 【原型设计工具】​​上海道宁为您提供Justinmind,助力您在几分钟内形成原型,并现场测试,无需编写任何代码
  • 计算机网络中---HDLP协议和PPP协议
  • k8s之节点kubelet预留资源配置
  • 机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]
  • vscode+elementui校园跑腿系统 nodejs+vue
  • [蓝桥杯单片机8]定时器的简单应用
  • node-HTTP协议
  • 基于springboot+vue的地方美食分享网站
  • 【Android】之【Aplication】
  • 社区之声|Grant Program支持Moonbeam生态壮大
  • GO实现Redis:GO实现Redis协议解析器(2)
  • Geoserver 发布wmts服务,以及cesium加载发布的wmts服务
  • 【微信小程序】selectComponent(#id)失败得到是null分析
  • JVM中引用计数法与可达性分析
  • JS-对象篇
  • 【Unity】创建一个自己的AR安卓程序
  • 游戏平台商店化的功能特点
  • 最新前端面试知识点总结-2023(3w+字,长篇幅)
  • 离线安装ffmpeg
  • 位置编码Positional Encoding
  • Java异步注解@Async详解
  • macOS Big Sur 11.7.5 (20G1225) 正式版 ISO、PKG、DMG、IPSW 下载
  • 硬件语言Verilog HDL牛客刷题day02 组合逻辑部分
  • 【LM401】ADC采集代码解读
  • CSDN 编程竞赛四十期题解
  • 【TypeScript学习之路】泛型
  • 数据分析学习项目:东京奥运会跳水评论分析
  • Winform/Csharp中使用Linq的Where条件筛选、Select字段映射(左外连接并设置无匹配时默认值)、OrderBy(排序并自定义排序规则)