• 简单学习解析Python的命令行参数


    目标

    学习Python命令行参数的基础。
    尝试使用 argparse库 对命令行参数进行更高级的解析。

    Python命令行参数基础

    运行python脚本的时候,可以在脚本文件名后面加上参数(以空格分隔)。
    python脚本里可以通过sys.argv来得到这些参数。

    例如,python脚本内容:

    import sys
    
    if __name__ == "__main__":
        print(type(sys.argv))
        print(sys.argv)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在Cmd中运行这个文件:

    python D:\Temp\test0905.py apple red
    
    • 1

    将会输出:

    <class 'list'>
    ['D:\\Temp\\test0905.py', 'apple', 'red']
    
    • 1
    • 2

    可以看到,sys.argv是一个列表,它的第一个元素是文件名本身,后面每个元素都是一个参数。


    其实,只要知道了基础用法,命令行参数的解析已经不存在技术上的障碍了。不过在易用性上,还有更方便的途径。

    例如,当参数是这种形式:

    python D:\Temp\test0905.py -fruit apple -color red
    
    • 1

    则上面的脚本会输出:

    ['D:\\Temp\\test0905.py', '-fruit', 'apple', '-color', 'red']
    
    • 1

    这样使用起来有一些问题:

    • 我需要自己再写逻辑,将“fruit”和“apple”联系起来,将“color”和“red”联系起来。
    • 参数的位置代表了其意义,例如第“2”个参数是水果的种类,第“4”个参数是水果的颜色。当参数数量变多时会变得迷惑,而且增减参数时也会变得麻烦。

    而使用一些更高级的方式会让解析参数更方便。

    学习使用argparse库对命令行参数进行解析

    argparse库就能解决上面提到的问题。(另一个解析参数的库是 getopt,可以看这里

    比如,上面的例子就可以这样来解析参数:

    import argparse
    
    if __name__ == "__main__":
        #创建ArgumentParser
        parser = argparse.ArgumentParser()
        #添加要解析的参数名字:
        parser.add_argument("-color")
        parser.add_argument("-fruit")   
        #解析:
        args = parser.parse_args()
        
        #测试打印一些数据
        print(type(args))
        print(args)
        print(args.fruit)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    再次调用

    python D:\Temp\test0905.py -fruit apple -color red
    
    • 1

    将会得到:

    <class 'argparse.Namespace'>
    Namespace(color='red', fruit='apple')
    apple
    
    • 1
    • 2
    • 3

    当然,这只是一个最简单的使用例子。argparse库更多的使用细节可以参考:Argparse Tutorial

  • 相关阅读:
    图片怎么转文字?建议收藏这些方法
    Vue计算属性computed和监听watch
    Java集合01:
    YOLO系列目标检测算法——PP-YOLO
    event.pageX 和 event.clientX 区别
    【Java|golang】754. 到达终点数字
    生产制造企业数字化转型:流程制造ERP
    记一次服务器异常掉电,导致HBase Master is initializing 问题处理
    Linux文件系统(Linux一切皆文件)
    导出Excel的技术分享-综合篇
  • 原文地址:https://blog.csdn.net/u013412391/article/details/126710775