Python 命令行之旅:深入 click 之参数篇

花下猫语:处理命令行任务时,click 应该是最优雅的实现方法。今天继续分享这个系列的第二篇。另外还值得关注一点,这个库把装饰器用得炉火纯青,学习装饰器的话,这是一个很好的参考对象。

剧照 | 《奇葩说》

作者:HelloGitHub-Prodesire

涉及的示例代码,已同步更新到HelloGitHub-Team 仓库[1]

一、前言

在上一篇文章中,我们初步掌握了 的简单用法,并了解到它与 和 的不同。接下来,将深入介绍 的各类用法,以让你能轻松打造复杂的命令行程序。

在概念上, 把命令行分为 3 个组成:参数、选项和命令。

就是跟在命令后的除选项外的内容,比如 中的 就是表示文件路径的参数

就是以 或 开头的参数,比如 、

就是命令行的初衷了,比如 就是命令,而 中的 则是 的子命令

二、参数

2.1 基本参数

就是通过位置里指定参数值。

比如,我们可以指定两个位置参数 和 ,先添加的 位于第一个位置,后加入的 位于第二个位置。那么在命令行中输入 的时候,分别对应到的就是 和 :

2.2 参数类型

就是将参数值作为什么类型去解析,默认情况下是字符串类型。我们可以通过 入参来指定参数类型。

支持的参数类型多种多样:

/ 表示字符串类型,这也是默认类型

/ 表示整型

/ 表示浮点型

/ 表示布尔型。很棒之处在于,它会识别表示真/假的字符。对于 、、 和 会转化为 ;、、 和 会转化为

表示 UUID,会自动将参数转换为 对象

表示文件,会自动将参数转换为文件对象,并在命令行结束时自动关闭文件

表示路径

表示选择选项

表示范围选项

同 一样, 也支持自定义类型,需要编写 的子类,并重载 方法。

官网提供了一个例子,实现了一个整数类型,除了普通整数之外,还接受十六进制和八进制数字, 并将它们转换为常规整数:

2.3 文件参数

在基本参数的基础上,通过指定参数类型,我们就能构建出各类参数。

是非常常用的一类参数,通过 指定,它能正确处理所有 Python 版本的 unicode 和 字节,使得处理文件十分方便。

2.4 文件路径参数

用来处理文件路径,可以对路径做是否存在等检查,通过 指定。不论文件名是 unicode 还是字节类型,获取到的参数类型都是 unicode 类型。

如果文件名是以 开头,会被误认为是命令行选项,这个时候需要在参数前加上 和空格,比如

2.5 选择项参数

用来限定参数内容,通过 指定。

比如,指定文件读取方式限制为 和 :

2.6 可变参数

用来定义一个参数可以有多个值,且能通过 来定义值的个数,取得的参数的变量类型为元组。

若 ,为一个数字,则要求该参数提供 N 个值。若 为 则接受提供无数量限制的参数,如:

如果要实现 中要求参数数量为 1 个或多个的功能,则指定 且 即可:

2.7 从环境变量读取参数

通过在 中指定 ,则可读取指定名称的环境变量作为参数值,比如:

执行如下命令查看效果:

而在 中,则需要自己从环境变量中读取。

三、小节

本文讲解了 中基本参数的用法,在此基础上介绍了各种类型的参数,最后说明了从环境变量中获取参数值的写法。

在下一篇文章中,我们来继续深入了解 的功能,看看它都支持什么样的“选项”。

参考资料

HelloGitHub-Team 仓库:https://github.com/HelloGitHub-Team/Article

感谢创作者的好文

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191115A0MT5W00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动