fire是Google开源的用于生成命令行接口的包
- 利用fire可以使得我们在BASH中就可以直接调用.py文件中的函数或者类。
- fire有几种不同的用法,下面逐个介绍
version 1:单个函数
在example.py文件中定义原函数:
import fire
import datetime
def cal_days(date_str1, date_str2):
date_str1 = str(date_str1)
date_str2 = str(date_str2)
d1 = datetime.datetime.strptime(date_str1, '%Y%m%d')
d2 = datetime.datetime.strptime(date_str2, '%Y%m%d')
delta = d1 - d2
return delta.days
if __name__ == '__main__':
fire.Fire(cal_days)
在BASH中引用
$ python example.py 20170421 20170401
20
Version 2:多个函数
import fire
import datetime
def cal_days(date_str1, date_str2):
'''计算两个日期之间的天数'''
date_str1 = str(date_str1)
date_str2 = str(date_str2)
d1 = datetime.datetime.strptime(date_str1, '%Y%m%d')
d2 = datetime.datetime.strptime(date_str2, '%Y%m%d')
delta = d1 - d2
return delta.days
def days2today(date_str):
'''计算某天距离今天的天数'''
date_str = str(date_str)
d = datetime.datetime.strptime(date_str, '%Y%m%d')
delta = datetime.datetime.now() - d
return delta.days
if __name__ == '__main__':
fire.Fire()
在BASH中引用
$ python example.py days2today 20170401
21
$ python example.py cal_days 20170422 20170401
21
Version 3:利用main()
import fire
def hello(name):
return 'Hello {name}!'.format(name=name)
def main():
fire.Fire(hello)
if __name__ == '__main__':
main()
Version 4:进阶
以我目前的理解fire,就是将文件中的类或者函数暴露给命令行。
除了利用fire.Fire(),还有其他用法:
- fire.Fire({str_1: fun_1, str_2: fun_2})
- fire.Fire( <class> )
- 更多使用方法见