python制作命令行工具——fire

本文介绍了Python Fire库,它能从任何Python对象自动生成命令行接口。内容包括Fire的快速安装、上手实践、参数类型解析以及通过类、命令嵌套、属性访问和链式调用进行的进阶使用。文章还提到了如何解决命令行工具在运行时的常见问题,使其更接近于Linux命令行工具的体验。
摘要由CSDN通过智能技术生成

一、快速介绍

来一波官方介绍。

  • Python Fire是一个库,用于从任何Python对象自动生成命令行接口。
  • 是用python创建CLI的一种简单方法。
  • 是开发和调试Python代码的一个有用工具。
  • Python Fire帮助探索现有代码或将其他人的代码转换为CLI。
  • 使得Bash和Python之间的转换更加容易。
  • 通过使用已经导入和创建的模块和变量来设置REPL, Python Fire使使用Python REPL变得更容易。

没听懂 ???

不是太明白 ???

不要紧,看完本篇就懂了。

二、快速安装

pip install fire
conda install fire -c conda-forge
1. git clone https://github.com/google/python-fire.git
2. cd python-fire
3. python setup.py install

Github地址: python-fire

三、快速上手

实践出真知

创建一个test.py文件,写入以下内容

import fire

def test(your_var="default_value"):
	return 'This is a test ! value : %s' % your_var

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

咱们来看一下效果

# 缺省参数
root@node:~# python test.py 
This is a test ! value : default_value

# 关键字参数
root@node:~# python test.py --your_var=newValue
This is a test ! value : newValue

# 位置参数
root@node:~# python test.py localtionValue
This is a test ! value : localtionValue

现在呢,我们反过头来看一下官方介绍的第一行:

Python Fire是一个库,用于从任何Python对象自动生成命令行接口。

注意关键字:任何python对象。这意味着什么?

我们来看一段代码:

import fire

boy_name = 'XiaoMing'
girl_name = 'XiaoHong'

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

试一下: python test.py boy_name

是不是明白了些什么。

聊完这 缺省参数关键字参数位置参数 ,当然不能少了 * args 和 ** kwargs .

还是来看代码示例:

import fire

def run(*args):
    arg_list = list(args)
    return ' | '.join(arg_list)

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

跑一下就懂啦

root@node:~# python test.py run qwe rty uio asd fgh
qwe | rty | uio | asd | fgh

官方给的示例是这个样子的~~~

import fire

def order_by_length(*items):
  """Orders items by length, breaking ties alphabetically."""
  sorted_items = sorted(items, key=lambda item: (len(str(item)), str(item)))
  return ' '.join(sorted_items)

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

就是加了个长度和字母顺序的排序,来跑一下,看一下效果:

$ python example.py dog cat elephant
cat dog elephant

除此之外呢,我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值