python argparse模块简单理解


argparse是干哈的?

前一阵子看关于深度学习的代码看到了下面这种写法
在这里插入图片描述

what F?😵当时没太在意后来看另一个人也用了这种方法,查阅了一下,我认为这种方法主要有两个作用:

1.解析参数
2.实现命令行接口

1.解析参数

啥叫解析参数啊?

其实可以通俗来讲我们把英文翻译成中文,就类似一种解析的过程,而解析参数就是获取我们原本定义好的参数。这也是上图中argparse的主要功能

代码如下:

# -*- coding: UTF-8 -*-
import argparse  # 步骤一,导入模块

def parse_args():
    """
    :return:进行参数的解析
    """
    parser = argparse.ArgumentParser(
        description="you should add those parameter")  # 这些参数都有默认值,当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时,会打印这些描述信息,一般只需要传递description参数。
    parser.add_argument('--addresses', default="D:/data", help="The path of address")# 设置参数"addresses"的默认值为D:/data,help显示帮助信息
    parser.add_argument('--xx', default=1)  # 设置参数"xx"的默认值为1,这里没加type,数字1默认类型为int
    #这只是个测试规范写的话最好加上type=
    # parser.add_argument('--xx', type=int, default=1,help="")
    args = parser.parse_args()  # 步骤三,进行参数解析
    # parser.print_help()   #可以打印出帮助信息
    return args


if __name__ == '__main__':
    args = parse_args()
    print(args.addresses)  # 获取参数args.addresses的信息
    print(args.xx)
    print(type(args.addresses)) ##查看参数类型
    print(type(args.xx))

输出结果:
在这里插入图片描述
在构建模型中,我们往往需要定义一些参数,就可以用上面的方法,我觉得知道上面的就够用了,个人认为这是一个比较装13的写法😓

记录一个bug:

有些博客介绍argparse的时候先讲这个:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)

会报错,解决方法:
把args = parser.parse_args()改成args = parser.parse_known_args()[0]

2.实现命令行接口

我们知道,在windows、linux、macos这样一些操作系统中,除了提供一些傻瓜式的用户界面方便用户操作外,这些系统很大程度上都留给一些系统爱好者(或深度学习的用户)一些命令行接口。通过一些简单的系统命令,实现同界面一样的操作效果,甚至可以实现一些用户界面无法实现的功能。
而利用python的argparse同样可以实现命令行编写

我们通过argparse实现一个命令行加法功能

我在Pycharm中建立一个main.py文件
写入下面的代码):

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

直接在Pycharm运行:
在这里插入图片描述
显示错误,是代码错了吗?代码没错,但却提示需要参数N,那怎么做呢?
我们保存.py文件,然后打开命令行,输入下面面的命令,将打印出帮助信息
在这里插入图片描述
注意格式:python 路径 -h,不打-h会报跟开始一样的错误。

实现加法

如下图输入路径后输入参数和 --sum命令
在这里插入图片描述

输入参数,但不输入命令,输出最大值,因为default = max,默认输出最大值
在这里插入图片描述
如有错误欢迎指正
参考文章:https://blog.csdn.net/togetlife/article/details/88391119

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值