我是靠谱客的博主 跳跃飞鸟,最近开发中收集的这篇文章主要介绍Python学习--argparse-命令行解析库的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、模块简介

argparse是一个Python中的一个常用模块,和sys.argv()功能类似,主要用于编写命令行接口:对于程序所需要的参数,它可以进行正确的解析。此外,argparse可以自动的生成help(帮助)和usage(用法)信息,当程序的参数无效时,可以自动生成错误信息。

import argparse

二、argparse三个主要函数 

 1.parser = argparse.ArgumentParser()

ArgumentParser对象保存了所有必要的信息,用于将命令行参数解析为相应的python数据类型。

ArgumentParser对象 :

class argparse.ArgumentParser

(prog=None,        #程序文件名,defaulf:sys.argv[0]

usage=None,      #用法-程序使用说明,defaulf:从添加到解析器的参数生成

description=None, #描述-程序目的说明,在参数之前显示的文本;default:None

epilog=None,         #结语-程序说明后记,参数help后显示的文本;default:None

parents=[],             #父类-ArgumentParser对象的列表,其他参数也应该包括在内;default:[]

formatter_class=argparse.HelpFormatter,  #格式的类-用于自定义帮助输出的类help信息的说明格式

prefix_chars='-',       #前缀字符-命令函参数的前缀;defaulf:‘-’

fromfile_prefix_chars=None,    #来自文件的前缀字符-应该读取其他参数的前缀文件的字符集;default:None

argument_default=None,     #参数默认-参数的全局默认值;default:None

conflict_handler='error',        #冲突处理-解决冲突选项的策略,通常时不必要的;default:‘erroe’

add_help=True,                  #增加帮助-是否增加help选项;default:True

allow_abbrev=True)            #允许使用缩写-是否使用参数的缩写;default:True

parser = argparse.ArgumentParser(description='Process some integers')

 

2.parser.add_argument()

调用add_argument()向ArgumentParser对象添加命令行参数信息,这些信息告诉ArgumentParser对象如何处理命令行参数。可以通过调用parse_agrs()来使用这些命令行参数,将会返回一个对象。

ArgumentParser.add_argument

(name, or flags,      #参数名或者参数标识;带 - 的为可选参数(optional parameter);不带 - 的为必选参数(positional                                             # parametrer)

action,                    #参数的处理方法,在命令行遇到此参数时要采取的基本操作类型

nargs,                    #参数的数量,应该使用的命令行参数的数量

const,                    #参数的常量值,某些动作和选择所需的常量值

default,                  #参数的默认值,如果命令行中不存在的参数,则生成的值

type,                      #参数的数据类型,应转换命令行参数类型

choices,                #参数的取值范围,参数允许值的范围

requires,               #参数是否可以忽略不写,进队可选参数有效,

help,                     #参数的说明信息,简单描述参数的作用

metavar,               #参数在说明信息usage(用法)中的名称,用法消息中的名称

dest,                    #对象的属性名,要添加到返回值的对象的属性的名称。

)

parser.add_argument('--learning_rate', type=float, default='0.001', help='initial learning rate [default:0.001]')

3.args = parser.parse_args()

通过条用parse_args()来解析ArgumentParser对象中保存的命令行参数:将命令行参数解析成相应的数据类型并采取相应的动作,他返回一个Namespace对象。

ArgumentParser.parse_args(args=None, namespace=None)

args:字符串列表,默认来自sys.argv

namespace:对象名,默认是一个空的Namespace对象

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('learning_rate', type=float, default='0.001', help='initial learning rate [default : 0.001]')
args = parser.parse_args().learning_rate
print(args)

运行结果:
0.001

三、使用一个例子来说明

 1.使用IDE来运行

#这个是使用带有默认值的,可以在Pycharm等IDE中直接运行
import argparse

parser = argparse.ArgumentParser()

parser.add_argument('--GPU', type=int, default=0, help='GPU to use[default : GPU 0]')
parser.add_argument('--model', default='pointnet_cls', help='Model name:pointnet_cls or pointnet_cls_basic[default: pointnet_cls]')
parser.add_argument('--log_dir', default='log', help='log dir[default: log]')
parser.add_argument('--num_point', type=int, default='1024', help='point number[256/512/1024/2048] [default: 1024]')
parser.add_argument('--max_epoch', type=int, default='250', help='epoch to run[default: 250]')
parser.add_argument('--batch_size', type=int, default='32', help='batch size during training[default: 32]')
parser.add_argument('--learning_rate', type=float, default='0.001', help='initial learning rate [default:0.001]')
parser.add_argument('--momentum', type=float, default='0.9', help='initial learning rate [default:  0.9]')
parser.add_argument('--optimizer', default='adam', help='adam or momentum [default:adam]')
parser.add_argument('--decay_step', type=int, default='200000', help='decay step for lr decay [default:200000]')
parser.add_argument('--decay_rate', type=float, default='0.7', help='decay rate for lr decay[default:0.7]')

flags = parser.parse_args()

GPU_index = flags.GPU
print(GPU_index)

MODEL = flags.model
print(MODEL)

LOG_DIR = flags.log_dir
print(LOG_DIR)

NUM_POINT = flags.num_point
print(NUM_POINT)

MAX_EPOCH = flags.max_epoch
print(MAX_EPOCH)

BATCH_SIZE = flags.batch_size
print(BATCH_SIZE)

LEARNING_rate = flags.learning_rate
print(LEARNING_rate)

MOMENTUM = flags.momentum
print(MOMENTUM)

OPTIMIZER = flags.optimizer
print(OPTIMIZER)

DECAY_STEP = flags.decay_step
print(DECAY_STEP)

aa = parser.parse_args().decay_rate
print(aa)

运行结果:
0
pointnet_cls
log
1024
250
32
0.001
0.9
adam
200000
0.7

2.使用命令行来运行

进入你想要运行的*py文件的目录,使用 ctrl + 鼠标右键 进入命令行窗口

键入命令:

python xxx.py -h

 

键入命令:

python xxx.py

键入命令:

python xxx.py --GPU 2

 

键入命令:

python xxx.py --GPU 2 --model qqq

 

最后

以上就是跳跃飞鸟为你收集整理的Python学习--argparse-命令行解析库的使用的全部内容,希望文章能够帮你解决Python学习--argparse-命令行解析库的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部