python-argparse模块

Posted 恶熊比比

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-argparse模块相关的知识,希望对你有一定的参考价值。

argparse模块介绍

  • 作用:用于命令行参数和选项解析;
  • 应用:适用于需要频繁修改参数的模块,实现参数和代码分离;

操作

步骤

  1. 导包
  2. 创建解析器
  3. 添加参数和选项
  4. 解析参数
  5. 使用

导包

import argparse

创建解析器

parser = argparse.ArgumentParser()

添加参数

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

参数说明:https://blog.csdn.net/weixin_45800242/article/details/125658094

举例:
https://blog.csdn.net/topsogn/article/details/121562512

# parser.add_argument('--dataset',  default='ModelNet40', help='ModelNet10|ModelNet40|ShapeNet')
parser.add_argument('--dataroot', default='dataset/train', help='path to dataset')
parser.add_argument('--workers', type=int, default=0, help='number of data loading workers')
parser.add_argument('--batchSize', type=int, default=1, help='input batch size')
parser.add_argument('--pnum', type=int, default=2048, help='the point number of a sample')
parser.add_argument('--crop_point_num', type=int, default=1024,
                    help='0 means do not use else use with this weight')
parser.add_argument('--nc', type=int, default=3)

parser.add_argument('--niter', type=int, default=300, help='number of epochs to train for')
parser.add_argument('--weight_decay', type=float, default=0.001)

parser.add_argument('--learning_rate', default=0.0002, type=float, help='learning rate in training')
parser.add_argument('--beta1', type=float, default=0.9, help='beta1 for adam. default=0.9')
parser.add_argument('--cuda', type=bool, default=True, help='enables cuda')
parser.add_argument('--ngpu', type=int, default=1, help='number of GPUs to use')

parser.add_argument('--netG', default='Trained_Model_peach/point_netG10.pth',
                    help="path to netG (to continue training)")
# parser.add_argument('--netD', default='Trained_Model/point_netD50.pth', help="path to netD (to continue training)")

parser.add_argument('--manualSeed', type=int, help='manual seed')
parser.add_argument('--drop', type=float, default=0.2)
parser.add_argument('--num_scales', type=int, default=3, help='number of scales')
parser.add_argument('--point_scales_list', type=list, default=[2048, 1024, 512], help='number of points in each scales')
parser.add_argument('--each_scales_size', type=int, default=1, help='each scales size')
parser.add_argument('--wtl2', type=float, default=0.9, help='0 means do not use else use with this weight')
parser.add_argument('--cropmethod', default='random_center', help='random|center|random_center')

–dataset:数据集名称,默认为’ModelNet40’
–dataroot:数据集路径,默认为’dataset/train’
–workers:数据加载时的工作进程数,默认为0
–batchSize:输入批量大小,默认为1
–pnum:样本中点的数量,默认为2048
–crop_point_num:裁剪后的点的数量,默认为1024,如果为0则不使用,否则使用该权重
–nc:输入图像的通道数,默认为3
–niter:训练时的epoch数,默认为300
–weight_decay:权重衰减值,默认为0.001
–learning_rate:训练时的学习率,默认为0.0002
–beta1:Adam优化器的beta1值,默认为0.9
–cuda:是否启用CUDA,默认为True
–ngpu:使用的GPU数目,默认为1
–netG:Generator网络的路径,默认为’Trained_Model_peach/point_netG10.pth’
–manualSeed:手动设置的随机种子
–drop:Dropout层的概率,默认为0.2
–num_scales:金字塔尺度的数量,默认为3
–point_scales_list:每个尺度中的点数列表,默认为[2048, 1024, 512]
–each_scales_size:每个尺度的大小,默认为1
–wtl2:L2正则化的权重,默认为0.9,如果为0则不使用,否则使用该权重
–cropmethod:裁剪方法,可选值为’random’、‘center’和’random_center’,默认为’random_center’

解析参数

opt = parser.parse_args()

使用
例如给生成器添加参数 直接 opt.参数名称

# 加载生成器
point_netG = _netG(opt.num_scales, opt.each_scales_size, opt.point_scales_list, 1024)
point_netG = torch.nn.DataParallel(point_netG)
point_netG.to(device)
point_netG.load_state_dict(torch.load(opt.netG, map_location=lambda storage, location: storage)['state_dict'])
point_netG.eval()

python-argparse.ArgumentParser()用法解析

argparse.ArgumentParser()用法解析

argparse是一个Python模块:命令行选项、参数和子命令解析器。
主要有三个步骤:
创建 ArgumentParser() 对象
调用 add_argument() 方法添加参数
使用 parse_args() 解析添加的参数

  1. 创建解析器
parser = argparse.ArgumentParser(description=\'Process some integers.\')

使用 argparse 的第一步是创建一个 ArgumentParser 对象。
ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。

  1. 添加参数
parser.add_argument(\'integers\', metavar=\'N\', type=int, nargs=\'+\', help=\'an integer for the accumulator\')
  1. 解析参数

parser.parse_args([\'--sum\', \'7\', \'-1\', \'42\'])
Namespace(accumulate=, integers=[7, -1, 42])
1
2
ArgumentParser 对象

class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars=\'-\', fromfile_prefix_chars=None, argument_default=None, conflict_handler=\'error\', add_help=True, allow_abbrev=True)

prog - 程序的名称(默认:sys.argv[0])
usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
description - 在参数帮助文档之前显示的文本(默认值:无)
epilog - 在参数帮助文档之后显示的文本(默认值:无)
parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
formatter_class - 用于自定义帮助文档输出格式的类
prefix_chars - 可选参数的前缀字符集合(默认值:’-’)
fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
argument_default - 参数的全局默认值(默认值: None)
conflict_handler - 解决冲突选项的策略(通常是不必要的)
add_help - 为解析器添加一个 -h/–help 选项(默认值: True)
allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)

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 - 当参数在命令行中出现时使用的动作基本类型。
nargs - 命令行参数应当消耗的数目。
const - 被一些 action 和 nargs 选择所需求的常数。
default - 当参数未在命令行中出现时使用的值。
type - 命令行参数应当被转换成的类型。
choices - 可用的参数的容器。
required - 此命令行选项是否可省略 (仅选项可用)。
help - 一个此选项作用的简单描述。
metavar - 在使用方法消息中使用的参数值示例。
dest - 被添加到 parse_args() 所返回对象上的属性名。

参数源码getopt

def usage():
    print(\'-h help \\n\' \\
          \'-v vmname\\n\' \\
          \'--VmName=vmname\\n\' \\
          \'\')


if __name__ == \'__main__\':
    import getopt
    import sys

    if len(sys.argv) <= 1:
        usage()
        sys.exit()
    try:
        # sys.argv[1:] 取值范围 "hv:"  :前的一个字母为必选项 [\'VmName=\'] 参数别名
        options, args = getopt.getopt(sys.argv[1:], "hv:", [\'VmName=\'])
        for name, value in options:
            if name in (\'-h\'):
                usage()
            if name in (\'-v\', \'--VmName\'):
                start(value)
    except getopt.GetoptError:
        usage()
        sys.exit()

以上是关于python-argparse模块的主要内容,如果未能解决你的问题,请参考以下文章

Python-argparse模块

python-argparse模块

python-argparse.ArgumentParser()用法解析

numpy模块

numpy模块

numpy 模块和 pandas 模块