在这个分为两篇的关于具有绝佳命令行界面的终端程序的系列文章的第二篇教程中,我们将讨论 Prompt、Toolkit、Click、Pygments 和 Fuzzy Finder 。
这是我的一个分为两篇的关于具有绝佳命令行界面的终端程序的系列文章的第二篇教程。在第一篇文章中,我们讨论了一些能够使命令行应用用起来令人感到愉悦的特性。在第二篇文章中,我们来看看如何用 Python 的一些库来实现这些特性。
我打算用少于 20 行 Python 代码来实现。让我们开始吧。
Python Prompt Toolkit
我习惯于把这个库称为命令行应用的瑞士军刀,它可以作为readline、curses等的替代品。让我们首先安装这个库,然后开始该教程:
pip install prompt_toolkit
我们以一个简单的 REPL (LCTT 译注:REPL —— Read-Eval-Print Loop,交互式开发环境)开始。一个典型的 REPL 会接收用户的输入,进行一个操作,然后输出结果。比如在我们的例子中,我们将要实现一个具有 “回显” 功能的 REPL 。它仅仅是原样打印出用户的输入:
REPL
from prompt_toolkit import prompt while 1: user_input = prompt('>') print(user_input)
这就是实现 REPL 的全部代码。它可以读取用户的输入,然后打印出用户的输入内容。在这段代码中使用的prompt函数来自 prompt_toolkit库,它是readline库的一个替代品。
命令历史
为了增强我们的 REPL 的功能,我们可以添加命令历史: