Python编程:使用sys、argparse、click、fire实现命令行参数解析

简介: Python编程:使用sys、argparse、click、fire实现命令行参数解析

python实现脚本命令行的库有:


内置库sys

内置库argparse

第三方库click

第三方库fire

内置库sys

sys.argv 包含命令行参数列表,第一个参数是文件名


sys_demo.py


import sys
def add(a, b):
    return a + b
if __name__ == '__main__':
    ret = add(sys.argv[1], sys.argv[2])
    print(ret)

运行结果


(py3) $ python sys_demo.py 1 2
12

内置库argparse

python自带的参数解析,思路还算清晰,就是代码较多


argparse_demo.py


import argparse
def add(a, b):
    return a + b
if __name__ == '__main__':
    # 初始化解析器
    parser = argparse.ArgumentParser()
    # 定义参数
    parser.add_argument("-a", "--a", help="参数a")
    parser.add_argument("-b", "--b", help="参数b")
    # 解析
    args = parser.parse_args()
    ret = add(args.a, args.b)
    print(ret)

运行结果


(py3) $ python argparse_demo.py -a 1 -b 2
12

click库

click库使用装饰器,不过已经对源代码进行了修改


click_demo.py


import click
@click.command()
@click.option("-a", "--a", help="参数a")
@click.option("-b", "--b", help="参数b")
def add(a, b):
    click.echo(a + b)
if __name__ == '__main__':
    ret = add()
    print(ret)

运行结果


(py3) $ python click_demo.py -a 1 -b 2
12

fire库

说实话,fire库太优秀了,简洁,而且Fire可以


不接收参数

接收函数名

接收字典

接收对象

import fire
def add(a, b):
    return a + b
if __name__ == '__main__':
    fire.Fire()
1

运行结果


(py3) $ python fire_demo.py add 1 2
3

比较发现,唯独fire将我输入的数字型字符串转为了数字,进行相加,输出3,其他三个库均默认为字符串,输出12

相关文章
|
20天前
|
安全
BOSHIDA DC电源模块的基本参数解析
BOSHIDA DC电源模块的基本参数解析
BOSHIDA  DC电源模块的基本参数解析
|
21天前
|
前端开发 Java
SpringBoot之数组,集合,日期参数的详细解析
SpringBoot之数组,集合,日期参数的详细解析
14 0
|
13天前
|
分布式计算 DataWorks 调度
DataWorks操作报错合集之DataWorks配置参数在开发环境进行调度,参数解析不出来,收到了 "Table does not exist" 的错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
25 0
|
14天前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在开发环境中配置MaxCompute参数进行调度,但参数解析不出来,如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
14天前
|
存储 Java 大数据
JAVA:编程的艺术与实战解析
JAVA:编程的艺术与实战解析
20 2
|
18天前
|
存储 安全 Java
Java并发编程中的高效数据结构:ConcurrentHashMap解析
【4月更文挑战第25天】在多线程环境下,高效的数据访问和管理是至关重要的。Java提供了多种并发集合来处理这种情境,其中ConcurrentHashMap是最广泛使用的一个。本文将深入分析ConcurrentHashMap的内部工作原理、性能特点以及它如何在保证线程安全的同时提供高并发性,最后将展示其在实际开发中的应用示例。
|
20天前
|
存储 开发者 Python
Python中的argparse模块:命令行参数解析的利器
Python中的argparse模块:命令行参数解析的利器
18 2
|
21天前
|
JSON 前端开发 Java
SpringBoot之JSON参数,路径参数的详细解析
SpringBoot之JSON参数,路径参数的详细解析
17 0
|
21天前
|
前端开发 Java
SpringBoot之实体参数的详细解析
SpringBoot之实体参数的详细解析
15 0
|
物联网 Shell 开发者
Python Fire试用体验
之前用Python写过一些CLI的小工具,在CLI命令行传参处理上,一般都是用argparse,最近看到Google开源的Python Fire(2017-3-2就开源了), 把argparse包装了,可以自动将代码转变成 CLI,开发者无需做任何额外工作。减少没有技术含量的代码量,减少低级Bug产生可能,节省了宝贵的吃鸡时间。这么有意义的库,那么肯定要推荐下给小伙伴们。 ## Python
2315 0

推荐镜像

更多