what F?当时没太在意后来看另一个人也用了这种方法,查阅了一下,我认为这种方法主要有两个作用:
1.解析参数
2.实现命令行接口
啥叫解析参数啊?
其实可以通俗来讲我们把英文翻译成中文,就类似一种解析的过程,而解析参数就是获取我们原本定义好的参数。这也是上图中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]
我们知道,在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会报跟开始一样的错误。
实现加法
输入参数,但不输入命令,输出最大值,因为default = max,默认输出最大值
如有错误欢迎指正
参考文章:https://blog.csdn.net/togetlife/article/details/88391119