zoukankan      html  css  js  c++  java
  • python argparse例子实践

    python 解析命令行读取参数,在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。

    万能的python自带了sys.arg、argparse、optparse模块等,使读取命令行参数变得简单而规范。

    sys.argv

       解释:就是一个从程序外部获取参数的桥梁,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv可以看作是一个列表,所以才用[]提取其中的元素。 第一个元素是程序本身,后续的才依次是外部给与的参数。

       1. sys.argv 是命令行参数列表

       2. len(sys.argv)是命令行参数个数

       3. sys.argv[0]表示脚本名

       4. 注意参数顺序

    实例

    import sys
    
    print(sys.argv)  #['test_argv.py', 'hello', 'python']
    print(len(sys.argv))  #3
    print('第一个参数',sys.argv[0]) test_argv.py

    执行命令:

        python 脚本名称  params  params1 

    argparse模块

    1) 一般模式

        大多数情况下,脚本很可能需要多个参数,而且每次参数的类型用处各不相同,那么这个时候在参数钱添加标签表明参数的类型和用途十分有用,而利用argparse模块可以方便的实现这一目的。举例如下:

    import argparse
    parser = argparse.ArgumentParser(description="your script description")
    parser.add_argument("-unit", help="increase output verbosity",nargs="?")
    args = parser.parse_args()
    
    if args.unit:
        print('unit 存在')
    else:
        print('unit is none', args.unit)

    运行 python argp.py 后面跟 -unit / -u 时,例如: python argp.py -u hello 会输出hello ; 

    若直接运行 python argp.py -u 会输入None;

    若输入-unit / -u 之外的参数会报错: argp.py: error: unrecognized arguments: -r

     若不加 nargs = "?",直接输入python argp.py -u ,会报错: argp.py: error: argument -unit: expected one argument,说明加了-unit,后面必须要传参数;

    nargs="?"表示参数可以输入0或者1个;Jenkins构建时,若参数为非必填参数,可能会需要添加改配置;

    2)必需参数

     这种模式用于确保某些必需的参数有输入。

    parser.add_argument('--unit', required=True, type=int)

    required标签就是说--unit参数是必需的,并且类型为int,输入别的类型会报错。

    3) 位置参数

    位置参数与sys.argv调用比较像,参数没有显示的--xxx或者-xxx标签,因为调用与sys.argv相同。

    import argparse
    parser = argparse.ArgumentParser(description="your script description")
    parser.add_argument('env')              # 输入的第一个参数赋予名为env的键
    args = parser.parse_args()
    print('env is %s'%args.env)

    输入 python argp.py test, 输出>>> env is test;

    可用nargs参数限定输入的位置参数个数,默认为1.

    parser.add_argument('num', nargs=2, type=int)

    表示脚本可用读入2个整数赋予num键;

    nargs也可以用 '*' 表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值;

    '+'表示至少读取1个位置参数;

    '?'表示该位置参数要么没有,要么只有一个。

    4)输入类型

    可用type参数指定输入的参数类型,type类型还可以表示文件的操作类型从而直接进行文件的读写操作。

    parser.add_argument('file', type=argparser.FileType('r'))    # 读取文件
    args = parser.parse_args()
    for line in args.file:
        print line.strip()

    5)参数默认值

    一般情况下会设置一些默认参数,从而不需要每次输入某些不需要变动的参数,利用default参数即可实现。

    parser.add_argument('filename', default='text.txt')

    6)候选参数选择

    表示该参数能接受的值只能来自某几个值得候选,除此以外会报错,用choices参数即可。

    parser.add_argument('filename', choices=['test1.txt', 'text2.txt'])

    参考:https://www.cnblogs.com/arkenstone/p/6250782.html

  • 相关阅读:
    Yarn Client 模式
    K8S & Mesos 模式
    python_切片
    RDD执行原理
    基础编程
    python_html模板
    python_返回值
    python_机器学习_平均中位数模式
    VISIO下载+安装+第一个数据流图
    session对象
  • 原文地址:https://www.cnblogs.com/lhly/p/11579772.html
Copyright © 2011-2022 走看看