命令行参数怎么输入_太好用了!谷歌开源的命令行接口工具fire

8f17d13f597bfc323e61769e719defec.png

大家使用最多的命令行工具应该是pip了,pip提供了很多的命令行参数和选项,我们在终端使用pip install --help命令可以查看install子命令的帮助文档。

99a0491f0e8d76338b7b346d888101a5.png可以看到,除了最常用的pip install package命令,我们还可以附加很多可选选项来控制pip install命令的行为。例如:-r选项可以指定从一个requirements.txt的文件安装Python依赖包,--no-deps标志可以让pip在安装包的时候禁用自动安装依赖包的行为。

命令行接口的基础知识

命令行接口通常以可执行文件的名称开头。我们只需在控制台中输入它的名称,然后访问脚本的主入口点,例如pip

我们可以通过命令行,将参数传递给脚本,它们可以是:

Arguments (参数):这是传递给脚本的必需参数。如果您不提供它,则CLI会遇到错误。例如,pandas是此命令中的参数:pip install pandas。•Options (选项):顾名思义,它是一个可选参数,通常包含一个名称和一个值对,例如pip install pandas --cache-dir ./my-cache-dir。就是指定了./my-cache-dir作为应使用的缓存目录。•Flags (标志):这是一个特殊的选项参数,它告诉脚本启用或禁用某些行为。最常见的可能是--help

为什么需要命令行接口?

想象一下,如果pip没有提供一个命令行接口,每次我们安装一个包的时候,还要去代码中手动修改我们要安装的包名不是?是不是非常的繁琐?

因此,当代码需要频繁的修改某些参数的时候,使用命令行接口可以将参数和代码分离开来,从而让你的代码更加简洁,适用范围更广。

Python中有很多可以让人轻松编写用户友好的命令行接口工具,如标准库中的argparse。然而在实际使用过程中发现,用argparse做命令行接口,需要创建解析器、定义参数、解析参数等3个步骤,无形中写了很多样本代码。

import argparse# argparse需要手动定义和解析参数parser = argparse.ArgumentParser(description='Process some integers.')parser.add_argument('integers', metavar='N', type=int, nargs='+',                    help='an integer for the accumulator')parser.add_argument('--sum', dest='accumulate', action='store_const',                    const=sum, default=max,                    help='sum the integers (default: find the max)')args = parser.parse_args()print(args.accumulate(args.integers))

相比之下,谷歌开源了fire命令行工具就简单的多了,很多情况下,只需要一行代码就搞定了。接下来,我们来看fire的基本用法!

fire的基本用法

fire是谷歌开源的一款命令行工具,支持从任意的Python对象自动生成命令行接口,与标准库中的argparse等工具相比,更加的简洁高效。

假设我们有一个计算2个数值的函数,接收两个位置参数x和y,代码如下:

sum.py

import firedef sum(x,y):    """两个数值的加法求和计算    Args:        x (int): 第一个数值输入        y (int): 第二个数值输入    Returns:        int: 求和计算结果    """    return x+y

现在,我们想利用fire将上面的函数生成一个命令行接口,只需在sum.py底部再加入下面2行代码:

fire.py

if __name__ == "__main__":    fire.Fire(sum)

现在,我们在执行sum.py脚本就可以带上两个命令行参数x和y了。

# root @ MyMac-Pro in ~/Desktop [14:07:23] $ python sum.py --x=1 --y=2

上面提到过了fire使用的时候,不需要像argparse一样,需要定义参数、解析参数,十分的方便,fire还有提供了一个好用的功能是,fire会读取DocString字符串,自动生成命令行接口的文档,在命令行使用--help就可以查看。

查看sum.py的帮助文档:

# root @ MyMac-Pro in ~/Desktop [14:07:23] $ python sum.py --help

输出的命令行接口的帮助文档:

NAME    sum.py - 两个数值的加法求和计算SYNOPSIS    sum.py X YDESCRIPTION    两个数值的加法求和计算POSITIONAL ARGUMENTS    X        第一个数值输入    Y        第二个数值输入NOTES    You can also use flags syntax for POSITIONAL ARGUMENTS(END)

问:fire只能用在函数上面吗?

并非如此,fire可以用在模块、类、方法、函数等任意的对象,感兴趣的同学可以查看官方文档:https://github.com/google/python-fire/blob/master/docs/using-cli.md,了解fire更多的特性!

推荐阅读

•  竟有如此沙雕的代码注释?头给我笑掉了!•  又跌!6月全国程序员工资新统计,太扎心!•  面试了一个工作 4 年的程序员,还不如个应届生...•  好险!差点要写一个300行的 if-else!•  keras如何多输入多输出,以及中间层输出


欢迎关注我的公众号“数据科学杂谈”,原创技术文章第一时间推送。

1b3d2f32d02d8176333ea3cecf2654c9.png
8adf530c62b8a7ee168725d0a1c41dfb.png点个在看,是我继续原创的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch5中安装Elasticsearch-head插件

介绍 elasticsearch-head是一个用于管理Elasticsearch的web前端插件,搞过ES的同学应该都了解。该插件在es5中可以以独立服务的形式进行安装使用。本文将介绍如何操作。 相关链接:https://github.com/mobz/elasticsearch-headhttp://mobz.github.io/elast…

plsql最多可以存多少_银行内部透露:如果有10万块钱,可以都放在余额宝里吗?存银行是不是更好?...

阅读本文前,请您先点击上面的“蓝色字体”,再点击“关注”,这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅,请放心关注。声明:图文来源于网络,版权归原作者所有, 如有侵权请…

图解未来50年前沿科技趋势与22个预测

任何理论研究,必须具有符合未来发展趋势的预测,才能体现其可能的价值。近15年来,我们深入研究互联网结构的变化,提出在过去50年里,互联网从网状结构进化成为大脑模型是21世纪前沿科技爆发的根源,包括物联网…

centos8安装MySQL依赖_centos8安装mysql8

1,检查是否有mysql残留文件查找出安装的mysql软件包和依赖包rpm -pa | grep mysql依次删除yum remove mysql-xxx-xxx-查找出所用的配置文件find / -name mysql依次删除rm -rf /var/lib/mysql2,删除MariaDB的文件,装MySQL的话会和MariaDB的文件…

java format用法_java学习常用函数之日期时间函数

日期时间函数DATE_FORMAT(datetime ,fmt)和STR_TO_DATE(str, fmt)所需的日期模板使用NOW(),SYSDATE(),CURDATE(),CURTIME()获取当前时间SELECT CURTIME(),CURDATE(),NOW(),SYSDATE();DATEDIFF(date1,date2) 返回两个日期之间相差的天数SELECT DATEDIFF(CURDATE(),’2019-3-1′)…

NeurIPS 2019公布获奖论文!新增杰出新方向奖项,微软华裔研究员斩获经典论文...

来源:大数据文摘备受瞩目的NeurlPS 2019周日一早在温哥华拉开序幕,今天,组委会通过一篇博客公布了包括杰出论文奖、杰出新方向论文奖等五大类奖项。NeurIPS,全称神经信息处理系统大会(Conference and Workshop on Neural Informat…

万字长文深度分析华为智能汽车战略

来源: 中信证券2019 年 4 月,华为首次以汽车 Tier1 的身份参加上海车展。2019 年 11 月,北汽新能源总经理郑刚加盟华为。2019 年 11 月,华为发布核心网自动驾驶白皮书。本文为中信证券团队的分析报告,全文超过 15000 字…

Mac下关闭Sublime Text 3的更新检查

操作如下: 注意:update_check的属性前后都要有一个逗号。 ,"update_check":false, 然后还需要一步,就是注册破解,在【Help】->【Enter License】 —– BEGIN LICENSE —– Michael Barnes Single User License EA7E-…

javascript小游戏_个人网站集成js小游戏《圈小猫》教程及源码

今天在某网站浏览帖子的时候,发现帖子被删除了,然后弹出了404页面,页面上集成了一个小游戏,小游戏长什么样子呢?看下面这个图!第一步查看小游戏源码,发现这个小游戏完全是由JavaScript编写的&am…

国家脑库:神经科学研究的基础设施

来源:科技日报这是一个医用冷藏柜,双门,内有搁架。架子上叠着一个个透明的盒子,放得有些拥挤。盒子外侧写着编号,再仔细看,泡在福尔马林溶液里的,就是你在电视上、在科普片里看过很多次的——人…

多商户商城源码_多商户小程序开发搭建?开达应用多商户入驻商城小程序制作教程...

多商户小程序如何搭建?多商户入驻商城小程序快读搭建教程多商户设置前言:多商户是配合商城主应用才能使用基础设置支持选择提现方式,多商户的用户在申请提现时使用客服图标(开启)商户距离排序(开启)商品上架审核(开启)(在多商户-->商品管理…

中国北斗全球系统核心星座将于2019年年底部署完成

来源:IT之家在联合国全球卫星导航系统国际委员会(ICG)第十四届大会举办期间,中国卫星导航系统管理办公室宣布,今年底北斗三号将完成所有中圆地球轨道卫星发射任务,北斗全球系统核心星座部署完成,明年北斗全球系统将全面…

ns3 统计一个包所经历的时延_【直击UDE2020】显示链接的智慧生活,你我正在经历...

远古先民中“崇拜”眼睛的不在少数,比如,三星堆出土的青铜文物通常都有着大大的眼睛。先民对于眼睛的“崇拜”表达着实现视距更遥远、视野更广阔、画面更清晰的愿望。毕竟,人类通过味觉、触觉、嗅觉、听觉、视觉等五种器官感知世界&#xff0…

成长与迁移,全球半导体格局演变

来源:世纪证券根据核心驱动力不同, 半导体的发展可以分三个阶段, PC 与互联网时代—移动互联网时代—5GAIoT 时代。 随时代的发展,半导体呈现出“两个持续”的发展特点,即分工持续细化,产业链持续转移。从传…

mysql int tinyint_MySQL中int(M)和tinyint(M)数值类型中M值的意义

首先,我们创建一个数据表test:mysql> CREATE TABLE test(-> id1 int(1),-> id2 tinyint(1)->);我们给id1定义为int,并设置字符长度为1,id2定义为tinyint,也设置字符长度为1;然后分别插入值127,…

密码学重大里程碑!科学家暴力破解迄今最长RSA密钥,功劳却不在摩尔定律

来源:arstechnica密码学达到一个新的里程碑:研究人员解开了有史以来人类计算过的最长的RSA密钥,并对有史以来最大的整数离散对数进行了匹配计算。而且这次的突破不是来自硬件性能的提升,而要归功于软件和算法的改进。不过请放心&a…

9大领域187项全球工程前沿发布!有你的研究方向吗?

来源:科学网12月10日,中国工程院战略咨询中心、科睿唯安以及高等教育出版社在中国工程院联合发布《全球工程前沿2019》报告。报告围绕机械与运载工程、信息与电子工程、化工冶金与材料工程、能源与矿业工程、土木水利与建筑工程、环境与轻纺工程、农业、…

没有“好的”数据,AI就没有未来?听听云测数据怎么说

AI的崛起离不开“好的”数据作为地基,这也是云测数据成立的初衷所在。算力、模型和数据构成了人工智能的三要素,过去,我们过多的把目光聚焦于算力和模型上,殊不知,随着人工智能的深入,好的算法和模型已不再…

idea中event log_【JavaScript 教程】事件——Event 对象

作者 | 阮一峰概述事件发生以后,会产生一个事件对象,作为参数传给监听函数。浏览器原生提供一个Event对象,所有的事件都是这个对象的实例,或者说继承了Event.prototype对象。Event对象本身就是一个构造函数,可以用来生…

谷歌新智能体Dreamer将亮相NeurIPS 2019,数据效率比前身PlaNet快8个小时

来源:雷锋网在具有挑战性的环境中,一些人工智能系统通过利用过去经验所提供的世界表象来实现目标。研究人员将这些应用推广到新的情况,使它们能够在以前从未遇到过的环境中完成任务。事实证明,强化学习——一种使用奖励来推动软件…