哲学家说,人们不应该根据人们可以爬到多高的高度来判断人,而应该根据人们可以跌到多低的高度来判断。
世界上有许多伟大的开发人员,他们可以生产出引人入胜的算法,优美的体系结构和出色的代码。 但是这些程序员却为一些小型控制台脚本编写并编写了非常平庸的代码,以计算数据库中的分析数据或数据补丁。 不细分类和函数,笨拙的传递参数,使用print()
的模糊信息原始输出
今天,我们将讨论如何制作大多数人不关心的更好的程序-一次性控制台实用程序和脚本。

python-nubia
来自世界第二大商品公司-Facebook 的图书馆 。 当地工程师也对控制台应用程序的混乱感到厌倦,因此他们决定为他们提供一个交互式界面。 当然是文字的。

- 自动完成控制台脚本中可用功能的功能。
- 您可以在终端级别连接自动完成功能(在bash和zsh中有效)。
- 一个令人愉悦而美丽的状态栏,它将向用户显示正在发生的事情。
- 函数参数集及其类型的提示和验证。
术语图
随着控制台中信息的结束,许多人通常会遇到麻烦。 如上所述,它通常归结为print()
的简单输出。 读这篇文章当然不是很方便。
为了绘制程序中发生的事情,有一个术语图
它允许您在终端中制作此类图片

或更复杂

使用一个简单的栏,您可以以漂亮的条形形式显示程序的进度-这将很酷,并且打印出难以理解的值会更加令人愉快。
面料
在远程计算机上运行的脚本是另外一个麻烦。 当然,我们生活在DevOps时代,那时使用Salt和Ansible解决了很多任务。 但是也有可能需要定期登录到一组远程独轮车并在其中执行大量命令。 为此,有面料
- 支持不同的主机列表-您可以在应用程序集群中的数据库服务器上执行命令-只需在脚本中写入远程汽车即可。
- 独轮车的授权策略不同-您可以同时使用密钥和密码。
- 将脚本分解为子命令,将子命令分组为更大的团队-您可以为要运行的代码创建任意复杂的逻辑结构。
- 当然,您也可以在代码中干扰终端命令代码!
Fabric是基于Paramiko构建的,通常,您可以使用此低级SSH通信库执行命令。 但是,Fabric提供了必要的抽象级别,从而使其清晰易用。
这个库将一个简单的脚本变成一个功能强大的控制台应用程序。
例如,您可以将命令提示符行添加到文本界面。
from prompt_toolkit import prompt while 1: user_input = prompt('>') print(user_input)
然后,您可以像在终端中一样添加所使用命令的历史记录。
from prompt_toolkit import prompt from prompt_toolkit.history import FileHistory while 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 AutoSuggestFromHistory while 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 WordCompleter SQLCompleter = 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)
Liba非常简单,可以创建自己的很酷且完全可自定义的界面。
怎么会这样
专注于看似一次性的程序,将使您不必编写用于弹出的代码,而可以编写易于稍后重用的控制台工具。 这样可以节省时间,并且当然可以使脚本的使用更加有趣。