zoukankan      html  css  js  c++  java
  • python argparse

    传入一个参数

    创建demo.py

    import argparse
    
    parser = argparse.ArgumentParser(description='命令行中传入一个数字')
    #type是要传入的参数的数据类型  help是该参数的提示信息
    parser.add_argument('integers', type=str, help='传入的数字')
    
    args = parser.parse_args()
    
    #获得传入的参数
    print(args)

    在命令行中给demo.py 传入一个参数5,

    python demo.py 5

    运行,得到的运行结果是

    Namespace(integers='5')

    操作args字典

    其实得到的这个结果 Namespace(integers='5')是一种类似于python字典的数据类型。

    我们可以使用 arg.参数名来提取这个参数

    import argparse
    
    parser = argparse.ArgumentParser(description='命令行中传入一个数字')
    #type是要传入的参数的数据类型  help是该参数的提示信息
    parser.add_argument('integers', type=str, help='传入的数字')
    
    args = parser.parse_args()
    
    #获得integers参数
    print(args.integers)

    在命令行中运行 python demo.py 5 , 运行结果为

    5

    传入多个参数

    现在在命令行中给 demo.py 传入多个参数,

    import argparse
    
    parser = argparse.ArgumentParser(description='命令行中传入一个数字')
    parser.add_argument('integers', type=str, nargs='+',help='传入的数字')
    args = parser.parse_args()
    
    print(args.integers)

    nargs是用来说明传入的参数个数,'+'  表示传入至少一个参数。这时候再重新在命令行中运行 python demo.py 1 2 3 4得到

    ['1', '2', '3', '4']

    改变数据类型

      add_argument 中有 type 参数可以设置传入参数的数据类型。我们看到代码中有 type 这个关键词,该关键词可以传入list, str, tuple, set, dict等。例如我们把上面的 type=str,改成 type=int ,这时候我们就可以进行四则运算。

    import argparse
    
    parser = argparse.ArgumentParser(description='命令行中传入一个数字')
    parser.add_argument('integers', type=int, nargs='+',help='传入的数字')
    args = parser.parse_args()
    
    #对传入的数据进行加总
    print(sum(args.integers)

    在命令行中输入 python demo.py 1 2 3 4, 运行结果为

    10

    位置参数

    在命令行中传入参数时候,传入的参数的先后顺序不同,运行结果往往会不同,这是因为采用了位置参数,例如

    import argparse
    
    parser = argparse.ArgumentParser(description='姓名')
    parser.add_argument('param1', type=str,help='')
    parser.add_argument('param2', type=str,help='')
    args = parser.parse_args()
    
    #打印姓名
    print(args.param1+args.param2)

    在命令行中分别输入python demo.py 张 三python demo.py 三 张,得到的 运行结果分别为

    张三

    三张

    可选参数

    为了在命令行中避免上述位置参数的bug(容易忘了顺序),可以使用可选参数,这个有点像关键词传参,但是需要在关键词前面加--,例如

    import argparse
    
    parser = argparse.ArgumentParser(description='姓名')
    parser.add_argument('--family', type=str,help='')
    parser.add_argument('--name', type=str,help='')
    args = parser.parse_args()
    
    #打印姓名
    print(args.family+args.name)

    在命令行中输入

    python demo.py --family=张 --name=三

    运行结果

    张三

    可选参数虽然写法比较繁琐,但是增加了命令行中的可读性,不容易因为参数传入顺序导致数据错乱。

    默认值

    add_argument中有一个default参数。有的时候需要对某个参数设置默认值,即如果命令行中没有传入该参数的值,程序使用默认值。如果命令行传入该参数,则程序使用传入的值。具体请看下面的例子

    import argparse
    
    parser = argparse.ArgumentParser(description='姓名')
    parser.add_argument('--family', type=str, default='',help='')
    parser.add_argument('--name', type=str, default='', help='')
    args = parser.parse_args()
    
    #打印姓名
    print(args.family+args.name)

    在命令行中分别输入 python demo.py 、 python demo.py --family=李

    运行结果分别为

    张三

    李三

    必需参数

    add_argument有一个required参数可以设置该参数是否必需。

    import argparse
    
    parser = argparse.ArgumentParser(description='姓名')
    parser.add_argument('--family', type=str, help='')
    parser.add_argument('--name', type=str, required=True, default='', help='')
    args = parser.parse_args()
    
    #打印姓名
    print(args.family+args.name)

    在命令行中输入 python demo.py --family=张,运行结果

    usage: demo.py [-h] [--family FAMILY] --name NAME
    demo.py: error: the following arguments are required: --name

    因为可选参数name的required=True,所以必须要传入。如果我们将其更改为False,程序运行结果

    因上求缘,果上努力~~~~ 作者:希望每天涨粉,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/15508800.html

  • 相关阅读:
    C字符串和C++字符串
    Linux的用户态和内核态
    知乎问答:如何理解“In UNIX, everything is a file”?
    科普:并行计算、分布式计算、集群计算和云计算
    个人使用VIM的一些总结
    C语言回调函数学习
    Python的函数参数传递:传值?引用?
    ECMAScript 函数函数概述
    ECMAScript 函数arguments 对象
    ECMAScript 语句with 语句
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/15508800.html
Copyright © 2011-2022 走看看