Python Fire中两种命令行参数灵活设置方式详解

 更新时间:2024年01月30日 17:02:11   作者:databook  
Python的Fire库,一个用来生成命令行工具的的库,这篇文章主要针对命令行参数,补充两种更加灵活的设置方式,感兴趣的小伙伴可以跟随小编一起学习一下

前段时间,介绍过PythonFire库,一个用来生成命令行工具的的库。

请参考:Python Fire:自动生成命令行接口

今天,针对命令行参数,补充两种更加灵活的设置方式。

1. *args 型参数

*args型的参数可以接受任意长度的参数。

比如,模拟一个学校发送通知的功能:

import fire

def notions(school, *names):
    for name in names:
        print(f"[{school} 通知] hello {name}")


if __name__ == "__main__":
    fire.Fire(notions)

使用起来很灵活,

$  python.exe .\fire-sample.py NJ大学 小红 小李 小张 小华
[NJ大学 通知] hello 小红
[NJ大学 通知] hello 小李
[NJ大学 通知] hello 小张
[NJ大学 通知] hello 小华

$  python.exe .\fire-sample.py --school NJ大学 小红 小李 小张
[NJ大学 通知] hello 小红
[NJ大学 通知] hello 小李
[NJ大学 通知] hello 小张

$  python.exe .\fire-sample.py --school NJ大学 小红 小李 小张 小华
[NJ大学 通知] hello 小红
[NJ大学 通知] hello 小李
[NJ大学 通知] hello 小张
[NJ大学 通知] hello 小华

$  python.exe .\fire-sample.py 小红 小李 --school NJ大学 小张 小华
[NJ大学 通知] hello 小红
[NJ大学 通知] hello 小李
[NJ大学 通知] hello 小张
[NJ大学 通知] hello 小华

从上面使用的示例可看出,

  • 可以不输入参数名称(比如第一个例子),按照顺序第一参数赋值给school,其余的赋值给*names
  • *names参数支持不定长度的值
  • school参数指定参数名的话,可以放在任意的位置(比如上面第四个例子)。

2. **kwargs 型参数

**kwargs 型参数也是不定长度的,和*args型参数不同的地方在于,

使用**kwargs型参数时,需要指定参数名称

比如,模拟一个显示学生成绩的功能:

import fire

def scores(cls, **students):
    for k, v in students.items():
        print(f"[{cls} 成绩] {k}: {v}")


if __name__ == "__main__":
    fire.Fire(scores)

使用示例如下:

$  python .\fire-sample.py 初三1班 --小红 98 --小李 89 --小王 100
[初三1班 成绩] 小红: 98
[初三1班 成绩] 小李: 89
[初三1班 成绩] 小王: 100

$  python .\fire-sample.py --小红 98 --小李 89 --小王 100  初三1班
[初三1班 成绩] 小红: 98
[初三1班 成绩] 小李: 89
[初三1班 成绩] 小王: 100$  python .\fire-sample.py --小红 98 --小李 89 --小王 100 --cls 初三1班
[初三1班 成绩] 小红: 98


[初三1班 成绩] 小李: 89
[初三1班 成绩] 小王: 100

cls参数可以不指定名称,也可以放在任意位置上。

**students参数则必须指定参数名称,但参数名称不固定,参数的个数也不固定。

3. 总结

*args型和**kwargs型参数可以有效的缓解命令行工具灵活性不足的问题。

开发命令行工具时,根据自己的场景,使用这两种类型的参数可让命令行工具的接口更加简洁灵活。

到此这篇关于Python Fire中两种命令行参数灵活设置方式详解的文章就介绍到这了,更多相关Python Fire内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python命令行解析之parse_known_args()函数和parse_args()使用区别介绍

    python命令行解析之parse_known_args()函数和parse_args()使用区别介绍

    这篇文章主要介绍了python命令行解析之parse_known_args()函数和parse_args()使用介绍,需要的朋友可以参考下
    2018-01-01
  • Python中单、双下划线的区别总结

    Python中单、双下划线的区别总结

    这篇文章主要给大家介绍了关于Python中单、双下划线区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • Python实现登录接口的示例代码

    Python实现登录接口的示例代码

    本篇文章主要介绍了Python实现登录接口的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Python自动化办公之图片转PDF的实现

    Python自动化办公之图片转PDF的实现

    实现图片转换成PDF文档的操作方法有很多,综合对比以后感觉fpdf这个模块用起来比较方便而且代码量相当少。所以本文将利用Python语言实现图片转PDF,感兴趣的可以了解一下
    2022-04-04
  • Python实现将通信达.day文件读取为DataFrame

    Python实现将通信达.day文件读取为DataFrame

    今天小编就为大家分享一篇Python实现将通信达.day文件读取为DataFrame,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python如何使用Scapy实现端口探测

    Python如何使用Scapy实现端口探测

    Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具,它能够处理和嗅探各种网络数据包,本文主要介绍了Python如何使用使用Scapy实现端口探测,有需要的可以参考下
    2023-10-10
  • Python中的进制转换详解

    Python中的进制转换详解

    这篇文章主要介绍了Python中的进制转换详解,python内置函数进行进制转换的原理是将读入的一个字符串(python默认读入的都是字符串形式)转为10进制,然后再用相关函数进行其他进制转换,需要的朋友可以参考下
    2023-08-08
  • keras的load_model实现加载含有参数的自定义模型

    keras的load_model实现加载含有参数的自定义模型

    这篇文章主要介绍了keras的load_model实现加载含有参数的自定义模型,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 使用Python openpyxl批量处理Excel的操作指南

    使用Python openpyxl批量处理Excel的操作指南

    本文详细介绍了如何使用Python的openpyxl库自动化处理Excel文件,从环境搭建到数据读写、样式设置、公式和图表生成,再到批量处理多个文件,通过一个综合实战案例,展示了如何自动生成月度部门薪资报告,需要的朋友可以参考下
    2026-03-03
  • Python + selenium + crontab实现每日定时自动打卡功能

    Python + selenium + crontab实现每日定时自动打卡功能

    这篇文章主要介绍了Python + selenium + crontab实现每日定时自动打卡功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03

最新评论