zoukankan      html  css  js  c++  java
  • argparse基本功能极简介绍

    argparse基本功能极简介绍

    python脚本文件可以通过命令行的方式调用,在这种调用方法中,可以通过sys.argv来把命令行参数传入脚本文件,通过这种方式传入的参数是string,并且需要将该参数进行一定的转换,赋值才可以使用。那有没有一种方法可以直接将传入的参数放入脚本的命名空间,并且传入后就是python的原生类型(比如函数,list等),而不是string?

    python 内置模块argparse就是这个问题的答案,另外,它还可以自动的产生help和usage信息,以及发布error信息。运用该模块的流程是:(1)创建一个parser (2)为该parser增添参数 (3)用parser_args方法将参数分发。

    • 一个小例子

    创建一个名叫prog.py的脚本文件,内容如下:

    import argparse
    parser=argparse.ArgumentParser(description='Process some integers') #创建parser 对象
    parser.add_argument('integers',metavar='N',type=int,nargs='+',      #添加参数
                        help='an integer for the accumulator')
    parser.add_argument('--sum',dest='accumulate',action='store_const',const=sum,
                        default=max,
                        help='sum the integers(default:find the max)')
    args=parser.parse_args()        #分发参数
    print(args.accumulate(args.integers)) #输出来自参数accumulate
    

    命令行输入:

    $ python prog.py -h
    
    usage: prog.py [-h] [--sum] N [N ...]
    
    Process some integers.
    
    positional arguments:
     N           an integer for the accumulator
    
    optional arguments:
     -h, --help  show this help message and exit
     --sum       sum the integers (default: find the max)
     
     
    $ python prog.py 1 2 3 4
    
    4
    
    $ python prog.py 1 2 3 4 --sum
    
    10
    

    解读这个例子:

    首先创建ArgumentParser实例,可选参数description可以在命令行输入 python prog.py -h,显示出描述信息'Process some integers'。

    然后通过函数add_argument分别添加位置参数'integer',可选参数'sum'('--'或'-'表明为可选参数);

    可选参数metavar将得到的帮助信息里integers参数显示为'N',但不改变传入脚本文件的参数名,即参数名仍未integer

    可选参数type,可取这样一个对象,它可被调用,返回进行转换过的值。本例中为int,故传入的'integers'参数将被转换为整数;

    可选参数nargs,该参数将多个命令行参数与单一的动作(action)连结起来,本例为'+',表明所有命令行参数被装入一个list,必须保证至少该参数有一个被传入,否则报错;

    可选参数dest,决定了传入的参数名。本例中,--sum传入脚本的参数为'accumulate';

    可选参数action,将动作和命令行参数联系起来,本例中,'store_const',把const标明的参数(本例为sum函数句柄)储存起来,赋值给参数,所以在这里当命令行中出现--sum,就将变量accumulate=sum传入脚本文件;

    可选参数const,与其他动作配合使用,本例中与action='store_const'配合;

    可选参数default,规定了argparser中的可选参数(如本例中--sum),如果不出现,其默认值,本例中为max,即--sum如果不出现在命令行中,则为max.

    最后,在脚本中,parse_args可以没有参数的被调用,ArgumentParser将会自动的判定来的命令行的参数;

    传入的参数名是创建parser的属性名,相应的参数值就是parser的属性名的属性值;如本例传入的accumulate是个函数句柄,则parser.accumulate就得到了该句柄(如果是--sum缺省就是max,如果有--sum就是sum),parser.integers就是integers传入的值。

    更多参数及用法详见python官方文档。

    ##### 愿你一寸一寸地攻城略地,一点一点地焕然一新 #####
  • 相关阅读:
    Leetcode Unique Binary Search Trees
    Leetcode Decode Ways
    Leetcode Range Sum Query 2D
    Leetcode Range Sum Query
    Leetcode Swap Nodes in Pairs
    Leetcode Rotate Image
    Leetcode Game of Life
    Leetcode Set Matrix Zeroes
    Leetcode Linked List Cycle II
    CF1321A
  • 原文地址:https://www.cnblogs.com/johnyang/p/13044599.html
Copyright © 2011-2022 走看看