简评:python 构建命令行应用的第三方比较有名的包除了 click 之外还有一个叫 docopt,这是一个以文档先行为目标的包。个人是比较倾向于 Click 的,看了这篇文章之后,也很快写了一个 demo。

我对命令行很着迷。

我想为自己构建一个命令行应用程序,有这个想法之后,经过一番研究,我发现 Python 自带的内置模块 argparse 是不够的。

然后,我发现了「Click」模块。所以,今天,我们将尝试使用 Python 和 Click 创建一个基本的应用程序。

安装

$ pip install click

Hello, World

让我们保持传统,首先编写一个「Hello,World」,将这个文件命名为 cli.py

import click

@click.command()

def hello():

click.echo('Hello World!')

click.echo() 向给定的文件或标准输出打印一条消息外加一个换行符,初看起来,这很像 print函数,但它改进了对处理 Unicode 和二进制数据的支持。

command 装饰器将函数转换成一个可以被调用的命令:

if __name__ == '__main__':

hello()

调用时是这样的:

$ python hello.py

Hello World!

对应的帮助信息是这样的:

$ python hello.py --help

Usage: hello.py [OPTIONS]

Options:

--help Show this message and exit.

参数

目前,我们没有太多的计划工作,让我们给它添加一些参数。

import click

@click.command()

@click.argument('name')

def hello(name):

click.echo(f"Hello, {name}!")

if __name__ == '__main__':

hello()

运行:

$ python cli.py Anshul

Hello, Anshul!

如果没有参数,运行:

$ python cli.py

Usage: cli.py [OPTIONS] NAME

Error: Missing argument "name".

选项

顾名思义,这些是选项,不同于我们上面看到的参数,选项是可选的,不是强制性的。

import click

@click.command()

@click.option('--count', default=1, help="Number of greetings.")

@click.argument('name')

def hello(count, name):

for i in range(count):

click.echo(f"Hello, {name}!")

if __name__ == '__main__':

hello()

运行:

$ python cli.py Anshul --count 3

Hello, Anshul!

Hello, Anshul!

Hello, Anshul!

布尔 flags

有一些选项不需要任何值,他们只是 flag(即标识)。例如 --help 命令,它并不需要一个值,另一个可能在使用 cli 工具时会注意到的例子是 --version。

import click

@click.command()

@click.option('--flag', is_flag=True)

def hello(flag):

if flag:

click.echo("Our flag will sail high and above!")

else:

click.echo("Well, that didn't go as planned!")

if __name__ == '__main__':

hello()

运行:

$ python cli.py

Well, that didn't go as planned!

$ python cli.py --flag

Our flag will sail high and above!

现在就是这样,从这里开始你就可以做很多事情了

扩展阅读:极光日报,极光开发者旗下媒体。

每天导读三篇英文技术文章。

python编写命令行框架_使用 Python 和 Click 编写命令行应用程序相关推荐

  1. python gui编程 自动化框架_使用Python进行GUI操作自动化

    前言 本文介绍怎样使用Python进行跨平台的GUI操作的,其中使用的一个工具包是pyautogui,PyAutoGUI可以模拟鼠标的移动.点击.拖拽,键盘按键输入.按住操作,以及鼠标+键盘的热键同时 ...

  2. python 数据驱动接口自动化框架_利用Python如何实现数据驱动的接口自动化测试...

    前言 大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,m ...

  3. python什么时候用框架_关于python:框架和对象之间有什么区别,什么时候应该修改另一个?...

    我开始阅读python的+=语法,无意中发现了以下文章/答案:关于的交互式代码+= 所以我注意到帧和对象之间似乎有区别. . 在全局框架中,它们指向同一对象,即使它们是不同的变量:如果 l2 += [ ...

  4. python深度学习include框架_用Python实现深度学习框架

    1.大咖推荐:复旦大学计算机学院教授邱锡鹏.品质科技创始人兼CEO袁进辉(@老师木).格灵深瞳创始人兼CEO赵勇.奇虎360集团副总裁邓亚峰联合推荐 2.干货满满:从零开始用Python实现自己的深度 ...

  5. python路径在哪里设置_找Python安装目录,设置环境路径以及在命令行运行python脚本实例...

    第一点:找Python安装目录 方法一: 方法二: 输入import sys print(sys.path) 化黑线处 第二点:找到安装目录后就可以开始设置环境变量 这里我的安装目录为C:\Progr ...

  6. python中scrapy框架_简述python Scrapy框架

    一.Scrapy框架简介 Scrapy是用纯Python实现一个为了爬取网站数据,提取结构性数据而编写的应用框架,用途非常广泛.利用框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网 ...

  7. pythonscrapy框架_简述python Scrapy框架

    一.Scrapy框架简介 Scrapy是用纯Python实现一个为了爬取网站数据,提取结构性数据而编写的应用框架,用途非常广泛.利用框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网 ...

  8. python制作物联网控制软件下载_基于Python和Django框架的物联网智能设备管理系统的设计与实现...

    论文写作指导:请加QQ229366758 基于Python和Django框架的物联网智能设备管理系统的设计与实现 作者:未知 摘 要:针对目前日益增多的智能设备提出了兼容性好,稳定性高,易于管理的管理 ...

  9. python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架

    很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659 ...

最新文章

  1. python3安装步骤
  2. hdu (欧拉函数+容斥原理) GCD
  3. python q切换指定目录_Python小工具:3秒钟将视频转换为音频
  4. uni开发中可以用table标签么_「uni-app 组件」t-table 表格
  5. minecraft pythonapl_Substance PythonAPI入门案例
  6. include函数_include()函数以及JavaScript中的示例
  7. 后台拿webshell的常用方法总结
  8. 47 CO配置-控制-利润中心会计-设置实际数据的控制参数
  9. mysql修改root密码及修改密码过程中报错的解决方案
  10. C++相对路径下新建文件夹
  11. MySql Workbench不支持中文字符找不到my.cnf文件解决办法
  12. python web框架django面试题收藏
  13. 迅雷开放离线下载试用,每天8000名额,速度来抢!
  14. swarm主网BZZ挖矿:钱包如何添加BZZ合约?如何查钱包余额?
  15. 射频信号发生器的使用以及相关中心频率,载波,调制波术语解释
  16. java 蓝桥杯 分机号
  17. 计算机表格怎样筛选男女,excel表格数据男女筛选-EXCEL表格中选择性别怎么做 就是如何做筛选 ,比如......
  18. 中国成语测试软件,中国汉字水平测试
  19. ArrayList 类 的简单应用
  20. Windows/Linux日志分析

热门文章

  1. linux文件管理 - 系统文件属性
  2. div常用效果方法-transform
  3. 织梦5.7 10万新闻文章 生成测试
  4. 计算机病毒实践汇总六:IDA Pro基础
  5. XNA实现不停循环的路的效果
  6. win7怎么清除卸载Ghost启动项的残留
  7. 在ubuntu中安装PhantomJS
  8. Linux的netstat命令使用
  9. 隐藏元素 mayaa
  10. 谷歌recaptcha验证码java解决方案