花下猫语:处理命令行任务时,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
感谢创作者的好文
领取专属 10元无门槛券
私享最新 技术干货