显示命令

命令行程序中最常见的模式之一是需要打印对象的属性。cliff 提供了一个此类命令的基础类,因此它们只需要准备数据,用户就可以从几个输出格式化插件中选择一个来以他们喜欢的格式查看数据。

显示单个对象

cliff.show.ShowOne 基本类 API 扩展了 Command,允许 take_action() 返回要使用用户选择的格式化程序格式化的数据。子类应提供一个 take_action() 实现,该实现返回一个包含数据集列名称的元组和一个包含与这些名称关联的数据值的可迭代对象的两个成员元组。有关详细信息,请参阅 demoapp 中的 file 命令 的描述。

显示输出格式化程序

cliff 提供了用于显示命令的输出格式化程序。ShowOne 添加了一个命令行开关,让用户可以指定他们想要的格式化程序,因此您无需在应用程序中进行任何额外的工作。

表格

table 格式化程序使用 PrettyTable 生成为人类可读的格式化输出。这是默认格式化程序。

(.venv)$ cliffdemo file setup.py
+---------------+--------------+
|     Field     |    Value     |
+---------------+--------------+
| Name          | setup.py     |
| Size          | 5825         |
| UID           | 502          |
| GID           | 20           |
| Modified Time | 1335569964.0 |
+---------------+--------------+

shell

shell 格式化程序生成可以直接由典型的 UNIX shell 解析为变量赋值的输出。这避免了 shell 脚本中的额外解析开销。

(.venv)$ cliffdemo file -f shell setup.py
name="setup.py"
size="5916"
uid="527"
gid="501"
modified_time="1335655655.0"

(.venv)$ eval "$(cliffdemo file -f shell --prefix example_ setup.py)"
(.venv)$ echo $example_size
5916

value

value 格式化程序生成仅包含字段或字段值输出。

(.venv)$ cliffdemo file -f value -c Size setup.py
5916
(.venv)$ SIZE="$(cliffdemo file -f value -c Size setup.py)"
(.venv)$ echo $SIZE
5916

yaml

yaml 格式化程序使用 PyYAML 生成一个 YAML 映射,其中字段名称是键。

(.venv)$ cliffdemo file -f yaml setup.py
Name: setup.py
Size: 1807
UID: 1000
GID: 1000
Modified Time: 1393531476.9587486

json

json 格式化程序生成一个 JSON 对象,其中字段名称是键。

(.venv)$ cliffdemo file -f json setup.py
{
  "Modified Time": 1438726433.8055942,
  "GID": 1000,
  "UID": 1000,
  "Name": "setup.py",
  "Size": 1028
}

其他格式化程序

使用 tablib 生成 HTML 的格式化程序作为 cliff-tablib 的一部分提供。

创建您自己的格式化程序

如果标准格式化程序不能满足您的需求,您可以将另一个格式化程序与您的程序捆绑在一起,方法是从 cliff.formatters.base.ShowFormatter 派生子类,并在 cliff.formatter.show 命名空间中注册该插件。