专栏首页ml生成命令行接口--google开源的fire使用体验【python-fire】

生成命令行接口--google开源的fire使用体验【python-fire】

在python中,命令行接口常用的argparse 和click,但是相对于python-fire 来说灵活度太缺了,fire可以直接将python中的函数,以命令行显示.

简单的介绍几个例子:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#filename:  fire-demo.py 

__author__ = 'xijun1'
import fire


def demo(param):
    """
    just a demo
    :param param:  any str
    :return:
    """
    print "hello {} !".format(param)
    return;


if __name__ == '__main__':
    fire.Fire()

执行的格式为:  python 如果fire.Fire()没有指定名称时:

需要在执行命令行时,带入函数名:   python  fire-demo.py  demo ,同时,如果函数有参数是,需要输入参数,不然会不错,并提示:

 1 python_demo python fire-demo.py demo
 2 Fire trace:
 3 1. Initial component
 4 2. Accessed property "demo"
 5 3. ('The function received no value for the required argument:', 'param')
 6 
 7 Type:        function
 8 String form: <function demo at 0x10e424c80>
 9 File:        ~/github/python_demo/fire-demo.py
10 Line:        20
11 Docstring:   just a demo
12 :param param:  any str
13 :return:
14 
15 Usage:       fire-demo.py demo PARAM
16              fire-demo.py demo --param PARAM

如果带入参数: python  fire-demo.py  demo “google”

1  python_demo python fire-demo.py demo  "google" 
2 hello google !

或者我们也可以这样:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'xijun1'
import fire


def demo(param):
    """
    just a demo
    :param param:  any str
    :return:
    """
    print "hello {} !".format(param)
    return;



if __name__ == '__main__':
    fire.Fire(demo)

只需要执行:

python_demo python fire-demo.py google
hello google !

当我们面对一个类Class的时候:

class ho:
    def __init__(self,type):
        self.type = type
        pass

    def hodemo(self, param):
        """

        :param param: any string
        :return:
        """
        print "{} hello {} !".format( self.type,param)
        return;

我们只需要执行:

python_demo python fire-demo.py ho --type "gxjun"  hodemo "google"
gxjun hello google !

当然我们也可以将类写入Fire中:

python_demo python fire-demo.py --type  gxjun hodemo google
gxjun hello google !

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hdu 3172 Virtual Friends (映射并查集)

    Virtual Friends Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32...

    Gxjun
  • 关于位域如何节省内存(C++)

             位域:  最先使用在c语言中后来C++继承了这一优良的特点。          举个栗子:     int  -->  4字节   2^32位...

    Gxjun
  • HDUOJ---1862EXCEL排序

    EXCEL排序 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (...

    Gxjun
  • Barchart实现滚动标签跟随滚动

    目前有功能比较强大的柱形图Charts,写这个demo的目的主要是产品要实现 滚动柱形图,标签要跟随滚动。所以重新写了一个简单的demo实现了功能, 具体使...

    赵哥窟
  • 疯子的算法总结(二) STL Ⅰ 算法 ( algorithm )

    写在前面: 为了能够使后续的代码具有高效简洁的特点,在这里讲一下STL,就不用自己写堆,写队列,但是做为ACMer不用学的很全面,我认为够用就好,我只写我用的比...

    风骨散人Chiam
  • shell技巧分享(六)

    songleo
  • 详解LBP特征与应用(人脸识别)

    之前我已经写过一篇关于局部二值模式(LBP)文章,当时主要是介绍了一下局部二值模式的概念与其简单的尺度空间扩展,本文是上一篇文章基础上对局部二值模式的深化,涉及...

    OpenCV学堂
  • GitHub项目推荐 | 用于对机器学习模型进行对抗性攻击、防御和基准测试的Python库:CleverHans 3.0.0

    项目地址:https://github.com/tensorflow/cleverhans

    AI研习社
  • 开发 | GitHub项目推荐 : 用于对机器学习模型进行对抗性攻击、防御和基准测试的Python库

    此资料库包含CleverHans的源代码,CleverHans是一个Python库,用于将机器学习系统中的漏洞与对抗性示例进行对比。 您可以在随附的博客上了解有...

    AI科技评论
  • 当算法遇上敏捷开发

    我是非常倡导敏捷开发的方式的,不仅程序,包括设计、算法、运营等等,我都倾向于有想法立马实践,快速试错,不断迭代,找到最终最佳路径。

    mixlab

扫码关注云+社区

领取腾讯云代金券