有时候我们会有这样的一个需求:
我们定义了一个 Python 的方法,方法接收一些参数,但是调用的时候想将这些参数用命令行暴露出来。
比如说这里有个爬取方法:
import requests
def scrape(url, timeout=10):
response = requests.get(url, timeout=timeout)
print(response.text)
这里定义了一个 scrape 方法,第一个参数接收 url,即爬取的网址,第二个参数接收 timeout,即指定超时时间。
调用的时候我们可能这么调用:
scrape('https://www.baidu.com', 10)
如果我们想改参数换 url,那就得改代码对吧。
所以有时候我们就想把这些参数用命令行暴露出来,这时候我们可能就用上了 argparse 等等的库,挨个声明各个参数是干嘛的,非常繁琐,代码如下:
import argparse
parser = argparse.ArgumentParser(description='Scrape Function')
parser.add_argument('url', type=str,
help='the URL to scrape')
parser.add_argument('timeout', type=int,
help='timeout in seconds (default: 10)')
if __name__ == '__main__':
args = parser.parse_args()
scrape(args.url, args.timeout)
这样我们才能顺利地使用命令行来调用这个脚本:
python3 main.py https://www.baidu.com 10
是不是感觉非常麻烦?argparse 写起来又臭又长,想想就费劲。尤其是当参数较多时,需要维护大量的配置信息。
Fire 简介
但接下来我们要介绍一个库,用它我们只需要两行代码就可以做到如上操作。
这个库的名字叫做 Fire,它是 Google 开源的一个 Python 库,可以快速为某个 Python 方法或者类添加命令行的参数支持。它通过反射机制自动解析函数的签名,生成相应的命令行帮助信息和参数处理逻辑。
先看看安装方法,使用 pip3 安装即可:
pip3 install fire
这样我们就安装好了。
基础用法:函数支持
下面我们来看几个例子。
默认参数与可选标志
第一个代码示例如下:


