Argparse

最近需要读师兄代码 还要补写Python知识 同Java一起也在此记录学习笔记

import argparse
#官方给出的例程实现命令行计算和
parser = argparse.ArgumentParser(description='Process some integers.')
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))

第一步需要创建ArgumentParser对象
parser = argparse.ArgumentParser(description='这里为命令行中的提示')
接着介绍添加参数,参数分为两种,可选参数和位置参数
可选参数用“--”或“-”开头如例程中的

parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

其余都默认为位置参数
下面这句话中的integers可以理解为help文档中的别名
metavar理解为注释的信息如下图的 位置参数中的N 为解释该变量
type表示接收到为int类型变量
nargs表明接受参数个数 +表示接受至少一个 如果此处为整数表明接受几个整数参数

parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
image.png

接下来
dest为创建了一个属性 可以理解为键值对
action对象中的store_const 一般与const变量连用 意思为存储一个静态变量 变量的值const来提供
default 表明如果未打出--sum 则 accimulate的值为max
这几句话的意思为 命令行中打出--sum后 有个默认参数sum,否则为max

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()

这段代码中args有两个参数
integers保存了一个int列表
accumulate保存了一个方法
print一下可以看到结果

print(args.accumulate(args.integers))

我自己改写了个乘法的 打出-x 实现乘法 不打默认找最大值

#!/usr/bin/python3
#encoding=utf-8
import argparse


def chengfa(li):
    sum = 1
    for a in li:
        sum *= a
    return sum
parse = argparse.ArgumentParser(description = "命令行测试")
parse.add_argument('ints', type = int, metavar = '因子', nargs = '+', help = "因子的值们")
parse.add_argument('-x', dest = 'method',action = 'store_const', const = chengfa, default = max, help = "执行参数乘法否则默认最大")
args = parse.parse_args()
print(args.method(args.ints))
image.png

你可能感兴趣的:(Argparse)