• 简单学习解析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

  • 相关阅读:
    视频集中存储/云存储EasyCVR启动后查询端口是否被占用出错,该如何解决?
    Hive之DDL库操作
    【软考系统架构设计师】2022年系统架构师综合知识真题及解析
    Django templates 存放html目录
    EQ 均衡器
    python爬虫
    知识图谱系列4:neo4j学习
    ios下input不能输入,没有光标的原因及解决办法
    家政小程序开发制作,家政保洁上门维修小程序搭建
    005:vue2使用vue-type-writer实现打字机效果
  • 原文地址:https://blog.csdn.net/u013412391/article/details/126710775