1. 程式人生 > >生成命令列介面--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 !