• 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官方文档。

    ##### 愿你一寸一寸地攻城略地,一点一点地焕然一新 #####
  • 相关阅读:
    Codeforces ECR 83 C. Adding Powers (位运算)
    Codeforces Round #636div3 D. Constant Palindrome Sum (划分区间,差分)
    Codeforces Round #603 C. Everyone is a Winner!
    Centos7 下搭建SVN + Apache 服务器 风行天下
    完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)基础环境搭建 风行天下
    云计算的理解 风行天下
    Python之路3【知识点】白话Python编码和文件操作 风行天下
    C#中TreeView组件使用方法初步
    复制文件时explorer.exe出错解决方法
    C# 里TreeView绑定数据库实现分类
  • 原文地址:https://www.cnblogs.com/johnyang/p/13044599.html
Copyright © 2020-2023  润新知