python的包argparse介绍

argparse是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分。

1、未使用argparse:

import math

# 计算圆柱体的体积
def cal_vol(radius,height):
    vol = math.pi * pow(radius,2) * height
    return vol
if __name__=='__main__':
    print(cal_vol(2,4))

在这里插入图片描述

2、使用了argparse的:

2.1 简单例子(使用函数定义解析参数功能)

import math
# 1、导入包
import argparse

def parse_args():
    # 2、创建参数对象
    parse = argparse.ArgumentParser("计算圆柱体的体积")

    # 3、往参数对象中添加参数
    parse.add_argument("radius", type=int, help="圆柱体半径")
    parse.add_argument("height", type=int, help="圆柱体的高")

    # 4、解析参数对象获得解析对象
    args = parse.parse_args()

    return args


def cal_vol(radius, height):
    vol = math.pi * (radius**2) * height
    return vol

if __name__ == "__main__":

    # 使用解析对象,参数获取使用命令行参数
    args = parse_args()
    radius = args.radius
    height = args.height
    
    print(cal_vol(radius, height))

测试结果:
python的包argparse介绍_第1张图片
其中
1、命令行参数输入默认按顺序赋值,顺序不同会造成结果不同

python argparse_no_class.py 1 4
python argparse_no_class.py 4 1

2、默认命令-h可以获取添加参数时设置的帮助信息

python argparse_no_class.py -h

2.2 使用argparse的主要步骤:

1、导入argparse包;
2、创建ArgumentParser()参数对象;
3、调用add_argument()方法,往参数对象中添加参数
4、使用parse_args()解析参数对象,获得解析对象
5、使用解析对象:程序的其他部分需要使用命令行参数时,用解析对象.参数获取。

先看到这里,下面再看个写成类的(看到这里基本上就可用了,进阶的示例先不看,参考文章可以看看)

import argparse


class TestOptions():
    def __init__(self):
        self.parser = argparse.ArgumentParser(description="Style Transfer")
        self.parser.add_argument("--content", type=str, default='./data/077436.jpg', help="这个参数是输入图片的文件名")
        self.parser.add_argument("--style_id", type=int, default=26, help="这是风格图片的ID")

    def parse(self):
        self.opt = self.parser.parse_args()
        args = vars(self.opt)
        print('Load options')
        for name, value in sorted(args.items()):
            print('%s: %s' % (str(name), str(value)))

        return self.opt


if __name__ == "__main__":
    parser = TestOptions()
    args = parser.parse()
    print('*' * 98)
    print(args.content)

2.3 进阶示例

add_argument() 方法定义如何解析命令行参数
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
每个参数解释如下:
name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, --foo。
action - 命令行遇到参数时的动作,默认值是 store。
store_const,表示赋值为const;
append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
append_const,将参数规范中定义的一个值保存到一个列表;
count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
nargs - 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
const - action 和 nargs 所需要的常量值。
default - 不指定参数时的默认值。
type - 命令行参数应该被转换成的类型。
choices - 参数可允许的值的一个容器。
required - 可选参数是否可以省略 (仅针对可选参数)。
help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.

本文主要参考:
1、argparse 模块详解
2、python之parser.add_argument()用法——命令行选项、参数和子命令解析器(好文章)

你可能感兴趣的:(python基础,python)