专栏首页未闻Code一日一技:快速实现Python 命令行参数

一日一技:快速实现Python 命令行参数

我们有时候需要使用 Python 开发一些命令行工具,并在运行命令的时候指定一些参数,例如:
python3 xxx.py --name kingname --salary 999999

对于简单的,只有几个参数的工具,我们可以使用 sys.argv来获取。

如果我们还需要在参数里面输出帮助信息,并且同时兼顾两种格式:

python3 xx.py --name=kingname --salary=999

python3 xxx.py --name kingname --salary=999

那么使用 sys模块就不好用了。此时我们可以使用 argparse。但是如果你阅读它的官方文档:https://docs.python.org/zh-cn/3/howto/argparse.html,你就会发现 argparse写起来还是有点麻烦。

那么有没有简单的方法实现命令行参数呢?答案就是 fire这个库。

首先我们来安装一下它:

python3 -m pip install fire

然后我们来实现一个简单的支持命令行的程序:

import fire

def intro(name, salary):
    print(f'我的名字是:{name}, 我的月薪是{salary}')


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

这段代码支持三种调用方法,如下图所示:

使用参数 python3 test_fire.py--help可以看到自动生成的帮助信息:

如果漏掉了某些信息,那么就会报错:

那么如果有些参数可要可不要怎么办呢?也非常简单,给函数参数带上默认值即可,例如:

import fire

def intro(name='产品经理', salary=88888):
    print(f'我的名字是:{name}, 我的月薪是{salary}')


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

运行效果如下图所示:

使用 fire,让你的命令行参数更容易。

本文分享自微信公众号 - 未闻Code(itskingname),作者:kingname

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一日一技:如何使用JavaScript移除少数派的付费内容

    少数派(https://sspai.com/)是一个以生产力、效率工具为主要内容的数字消费指南平台。由于网站需要盈利,所以他们在网站上有所克制地增加了一些付费内...

    青南
  • 【一日一技】超简单的Pandas数据筛选方法

    {'name': '王小一', 'hight': 171, 'weight': 100},

    青南
  • 一日一技:在 Python 中实现函数重载

    假设你有一个函数connect,它有一个参数address,这个参数可能是一个字符串,也可能是一个元组。例如:

    青南
  • 一次与印度兄弟就Java10中的Thread-Local Handshakes的探讨

    背景 Java10引入了Thread Local Handshake功能。对此功能本人看了JEP312以后还是没有一个比较清晰的认识。为此,问了一些国内的JVM...

    ImportSource
  • 拍废的照片这样处理过也是美美的

    逼格不够不敢发圈,而在各种废片当中,夜景照片,是占大多数,这其中光线和设备占了很大部分原因,没事今天就把废片变宝吧。

    IT小侠公社
  • SpringCloud 2.x学习笔记:22、使用Sentinel实现接口限流

    https://github.com/alibaba/Sentinel/releases

    程裕强
  • Spring4+Spring MVC+MyBatis整合思路

    这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,并指定spring...

    Java学习
  • Spring4+SpringMVC+MyBatis整合思路

    这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,并指定spring...

    Java团长
  • 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

    今天在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常: 混合模...

    hbbliyong
  • access基本操作(c#操作,远程连接,执行sql,加密,备份)

    前言  最近项目用到了access,是的就是access,工作在桌面型的小数据库应用还是会用到的,如果你确定永远不会遇到access的操作,请忽略此篇文章 1....

    kmonkey

扫码关注云+社区

领取腾讯云代金券