命令行神器 Click教程A篇

简介: 摘要 这里介绍一个快速创建命令行的神器click,是一个用Python开发的第三方模块。 相比较Argparse来创建命令行或者参数解析。click确实方便了很多。 官网 的介绍如下:Click is a Python package for creating beautiful command line interfaces in a co

摘要

这里介绍一个快速创建命令行的神器click,是一个用Python开发的第三方模块。
相比较Argparse来创建命令行或者参数解析。click确实方便了很多。


官网 的介绍如下:

Click is a Python package for creating beautiful command line 
interfaces in a composable way with as little code as necessary.
It’s the “Command Line Interface Creation Kit”. It’s highly 
configurable but comes with sensible defaults out of the box.

安装

官网建议通过virtualevn来安装,关于virtualenv安装Python第三方包的详细教程和注意问题请参考 Centos 下 python 纯净虚拟环境

安装命令

pip install click

安装完成验证

root@pts/3 $ python
Python 2.7.5 (default, Nov 20 2015, 02:00:19)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import click
>>> click.__version__
'6.6'
>>>

使用

command

这里先参考官网给出来的一个例子:

## python case script
root@pts/3 $ cat case-1.py
#!/usr/bin/env python
#encoding:  utf-8
#author:    Colin
#date:      2016-12-29
#desc:
#

import click

@click.command()
def hello():
    click.echo('Hello World!')

if __name__ == '__main__':
    hello()

## execute
root@pts/3 $ python case-1.py
Hello World!

root@pts/3 $ python case-1.py --help
Usage: case-1.py [OPTIONS]

Options:
  --help  Show this message and exit.

这里发现 click 自动添加了一个 --help 的参数

python-click-case-1.png


option

这里介绍用 option 构造命令行参数, 再上面的例子基础上继续修改

## scripts
import click

@click.command()
@click.option('--name', prompt='enter your name here: ',
            help='greet to given name')
def hello(name):
    click.echo('Hello World! hello %s' % name)

if __name__ == '__main__':
    hello()


## execute script
root@pts/3 $ python case-2.py
enter your name here: : Colin
Hello World! hello Colin

root@pts/3 $ python case-2.py --name Colin
Hello World! hello Colin

root@pts/3 $ python case-2.py --name=James
Hello World! hello James

root@pts/3 $ python case-2.py --help
Usage: case-2.py [OPTIONS]

Options:
  --name TEXT  greet to given name
  --help       Show this message and exit.

脚本结果如下:
python-click-case-2.png

关于option使用过程中遇到的几个问题:

  • 参数名称只能是--xxxx,比如要以`–“开头,不然报错如下:

python-click-option-error-1.png

group

使用 group 可以把多个函数组合成子命令;

有两种方式:

A:

通过 `@click.group()` 装饰器定义一个函数 A,最后通过 
`A.add_command(hello)` 把别的函数加入到 `group` 函数中去。
注意 `hello` 是脚本中定义的一个命令行函数

B:

通过 `@click.group()` 装饰器定义一个函数 B,在定义一般命令行函数的时候,用 
`@B.command()` 来替代 `@click.command()` 装饰命令行函数`hello`

这里给出第一个方式的结果。第二个可以自己尝试看看结果是否一致。具体例子详见:

## python script
import click


@click.group()
def gpfun():
    pass

@click.command()
@click.option('--name', prompt='enter your name here: ',
            help='greet to given name')
def hello(name):
    click.echo('Hello World! hello %s' % name)

gpfun.add_command(hello)

if __name__ == '__main__':
    gpfun()


## execute
root@pts/3 $ python case-3.py --help
Usage: case-3.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  hello

root@pts/3 $ python case-3.py hello --help
Usage: case-3.py hello [OPTIONS]

Options:
  --name TEXT  greet to given name
  --help       Show this message and exit.

root@pts/3 $ python case-3.py hello --name='Colin'
Hello World! hello Colin

这里注意多了个gpfun函数,其上的装饰器是@click.group()

另外注意最下面的 if 判断里面的函数调用变成了 gpfun()

脚本结果如下:

python-click-case-3.png

其他详细的用法待续…


简书地址:命令行神器 Click教程A篇



公众号: DailyJobOps

    公众号: DailyJobOps    

目录
相关文章
|
JavaScript 前端开发 程序员
推荐三个神级VSCode插件[jupyter中写javascript,替代typora的markdown编辑器,记录敲代码时间的插件]
使用过Python的朋友应该都知道Jupyter-Notebook,因为它对新手朋友学习Python可谓是绝佳的工具,对Python老手来说使用它来写一些小Demo或者绘图分析都是非常不错的工具,我们都知道,最近,我开始了深入学习JavaScript的路途,偶尔为敲一下js来验证书中的说法以及自己的想法,同时可能会记一下笔记,然后可能还需要刷Leetcode
694 0
|
运维 Shell Linux
《Shell 脚本速查手册》下载地址
编写Bash脚本耗时长?不稳定?有妙招!阿里云开发者社区和linux中国开源社区联手推出《Shell脚本速查手册》,为运维工程师提供一个快速、便捷的查询手册,以共开发者查询自己日常工作中常用的命令和脚本。
141 0
《Shell 脚本速查手册》下载地址
|
运维 Shell Linux
《Shell 脚本速查手册》电子版下载地址
编写Bash脚本耗时长?不稳定?有妙招!阿里云开发者社区和linux中国开源社区联手推出《Shell脚本速查手册》,为运维工程师提供一个快速、便捷的查询手册,以共开发者查询自己日常工作中常用的命令和脚本。
176 0
《Shell 脚本速查手册》电子版下载地址
|
运维 Shell Linux
《Shell 脚本速查手册》电子版下载
编写Bash脚本耗时长?不稳定?有妙招!阿里云开发者社区和linux中国开源社区联手推出《Shell脚本速查手册》,为运维工程师提供一个快速、便捷的查询手册,以共开发者查询自己日常工作中常用的命令和脚本。
148 0
《Shell 脚本速查手册》电子版下载
|
C++
安利一个通过命令行使用 VS Code 打开项目的方法
安利一个通过命令行使用 VS Code 打开项目的方法
770 0
安利一个通过命令行使用 VS Code 打开项目的方法
|
机器学习/深度学习 IDE TensorFlow
Python命令行神器之Click
在Python开发和测试过程中主要有两种模式可以选择:脚本模式、命令行模式。在代码的开发和调试过程中使用脚本模式还是很方便的,尤其接触pycharm、eclipse这类强大的IDE,或者配合vs code这种综合的文本编辑器。但是如果使用纯文本编辑器,或者是在做整个系统开发时,与其他模型进行接口调用时,命令行模式就显得非常重要了。目前有很多热门的命令行工具,本文会一一介绍一下,并且重点介绍一下最近发现的一款命令行神器Click。
Python命令行神器之Click
|
Java Go 开发工具
C# 之 带你玩转命令行版《2048》 -- 附源码分享
C# 之 命令行版2048,自己动手做一个2048玩一下吧~
192 0
C# 之 带你玩转命令行版《2048》 -- 附源码分享
|
API 数据库 数据安全/隐私保护