网站建设应该注意哪些一手渠道推广平台
目录
文章目录
- 目录
- 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)