时间:2021-05-22
这篇文章主要介绍了Python命令行click参数用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一、前言
在概念上, click 把命令行分为 3 个组成:参数、选项和命令。
参数 就是跟在命令后的除选项外的内容,比如 git add a.txt 中的 a.txt 就是表示文件路径的参数
选项 就是以 - 或 -- 开头的参数,比如 -f、--file
命令 就是命令行的初衷了,比如 git 就是命令,而 git add 中的 add 则是 git 的子命令
二、参数
2.1 基本参数
基本参数 就是通过位置里指定参数值。
比如,我们可以指定两个位置参数 x 和 y ,先添加的 x 位于第一个位置,后加入的 y 位于第二个位置。那么在命令行中输入 1 2的时候,分别对应到的就是 x 和 y:
@click.command()@click.argument('x')@click.argument('y')def hello(x, y): print(x, y)2.2 参数类型
参数类型 就是将参数值作为什么类型去解析,默认情况下是字符串类型。我们可以通过 type 入参来指定参数类型。
click 支持的参数类型多种多样:
同 argparse 一样,click 也支持自定义类型,需要编写 click.ParamType 的子类,并重载 convert 方法。
2.3 文件参数
在基本参数的基础上,通过指定参数类型,我们就能构建出各类参数。
文件参数 是非常常用的一类参数,通过 type=click.File 指定,它能正确处理所有 Python 版本的 unicode 和 字节,使得处理文件十分方便。
@click.command()@click.argument('input', type=click.File('rb')) # 指定文件为二进制读@click.argument('output', type=click.File('wb')) # 指定文件为二进制写def inout(input, output): while True: chunk = input.read(1024) # 此时 input 为文件对象,每次读入 1024 字节 if not chunk: break output.write(chunk) # 此时 output 为文件对象,写入上步读入的内容2.4 文件路径参数
文件路径参数 用来处理文件路径,可以对路径做是否存在等检查,通过 type=click.Path 指定。不论文件名是 unicode 还是字节类型,获取到的参数类型都是 unicode 类型。
@click.command()@click.argument('filename', type=click.Path(exists=True)) # 要求给定路径存在,否则报错def hello(filename): click.echo(click.format_filename(filename))如果文件名是以 - 开头,会被误认为是命令行选项,这个时候需要在参数前加上 -- 和空格,比如
$ python hello.py -- -foo.txt-foo.txt2.5 选择项参数
选择项参数 用来限定参数内容,通过 type=click.Choice 指定。
比如,指定文件读取方式限制为 read-only 和 read-write:
@click.command()@click.argument('mode', type=click.Choice(['read-only', 'read-write']))def hello(mode): click.echo(mode)2.6 可变参数
可变参数 用来定义一个参数可以有多个值,且能通过 nargs 来定义值的个数,取得的参数的变量类型为元组。
若 nargs=N,N为一个数字,则要求该参数提供 N 个值。若 N 为 -1 则接受提供无数量限制的参数,如:
@click.command()@click.argument('foo', nargs=-1)@click.argument('bar', nargs=1)def hello(foo, bar): pass如果要实现 argparse 中要求参数数量为 1 个或多个的功能,则指定 nargs=-1 且 required=True 即可:
@click.command()@click.argument('foo', nargs=-1, required=True)def hello(foo, bar): pass2.7 从环境变量读取参数
通过在 click.argument 中指定 envvar,则可读取指定名称的环境变量作为参数值,比如:
@click.command()@click.argument('filename', envvar='FILENAME')def hello(filename): print(filename)执行如下命令查看效果:
$ FILENAME=hello.txt python3 hello.pyhello.txt而在 argparse 中,则需要自己从环境变量中读取。
三、小节
本文讲解了 click 中基本参数的用法,在此基础上介绍了各种类型的参数,最后说明了从环境变量中获取参数值的写法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考。具体代码如下:fromoptparseimportOptionP
前言在开发CLI(CommandLineInterface)工具的业务场景下,离不开命令行参数的收集和解析。接下来,本文介绍如何收集和解析命令行参数。收集命令行
在python中,命令行解析的很好用,首先导入命令行解析模块importargparseimportsys然后创建对象parse=argparse.Argume
在命令行中运行python代码是很常见的,下面介绍如何定义命令后面跟的参数。1常规用法 Python代码中主要使用下面几行代码来定义并获取需要在命令行中赋
本文实例讲述了python命令行参数用法。分享给大家供大家参考,具体如下:在命令行下执行某些命令的时候,通常会在一个命令后面带上一些参数,这些参数会传递到程序里