跳转到主要内容

用于在Python中构建强大的交互式命令行的库

项目描述

AppVeyor Latest Version RTD License Codecov

https://github.com/prompt-toolkit/python-prompt-toolkit/raw/master/docs/images/logo_400px.png

prompt_toolkit 是一个用于在Python中构建强大的交互式命令行应用的库。

阅读readthedocs上的文档

prompt_toolkit功能

prompt_toolkit可以是GNU readline的替代品,但它可以远不止于此。

一些功能

  • 纯Python.

  • 输入时语法高亮。(例如,使用Pygments词法分析器。)

  • 多行输入编辑。

  • 高级代码补全。

  • 支持Emacs和Vi键盘绑定。(类似于readline。)

  • 甚至一些高级Vi功能,如命名寄存器和双字符。

  • 反向和正向增量搜索。

  • 很好地与Unicode双宽字符一起工作。(中文输入。)

  • 选择文本进行复制/粘贴。(Emacs和Vi样式。)

  • 支持括号粘贴

  • 鼠标支持光标定位和滚动。

  • 自动建议。(类似于fish shell。)

  • 多个输入缓冲区。

  • 无全局状态。

  • 轻量级,唯一依赖项是Pygments和wcwidth。

  • 在Linux、OS X、FreeBSD、OpenBSD和Windows系统上运行。

  • 等等...

请随意创建用于错误和功能请求的工单,如果您有想与他人分享的优秀补丁,请创建拉取请求。

安装

pip install prompt_toolkit

对于Conda,执行以下操作:

conda install -c https://conda.anaconda.org/conda-forge prompt_toolkit

关于Windows支持

prompt_toolkit 是跨平台的,您在它之上构建的一切都应在Unix和Windows系统上运行良好。Windows支持在最近的Windows 10构建中最佳,因为命令行窗口支持vt100转义序列。如果不受支持,我们将回退到使用Win32 API进行颜色和光标移动。

值得注意的是,实现是“尽可能实现可能的功能”。Unix和Windows终端都有其局限性。但总的来说,Unix的体验会更好一些。

入门指南

库最简单的示例如下所示

from prompt_toolkit import prompt

if __name__ == '__main__':
    answer = prompt('Give me some input: ')
    print('You said: %s' % answer)

对于更复杂的示例,请查看 examples 目录。所有示例都旨在仅演示一个功能。此外,不要害怕查看源代码。prompt 函数的实现可能是一个不错的起点。

理念

prompt_toolkit 的源代码应该是 可读的简洁的高效的。我们更喜欢短函数,每个函数专注于一项任务,并且输入和输出类型明确指定。我们更倾向于使用组合而不是继承,因为继承可能导致同一对象具有过多的功能。在可能的情况下,我们更喜欢不可变对象(对象初始化后不会改变)。可重用性很重要。我们绝对避免具有变化的全局状态,应可能在同一进程中具有多个独立的同一代码实例。架构应该是分层的:低层操作于原始操作和数据结构,当正确组合时,提供所有可能的灵活性;而在高层,应该有一个更简单的API,易于使用且适用于大多数用例。考虑算法和效率很重要,但避免过早优化。

使用 prompt_toolkit 的项目

特别感谢

  • Pygments:语法高亮器。

  • wcwidth:确定宽字符所需的列数。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

prompt_toolkit-3.0.48.tar.gz (424.7 kB 查看哈希值)

上传时间

构建分发

prompt_toolkit-3.0.48-py3-none-any.whl (386.6 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面