parser.add_argument详解

news2024/11/17 15:43:25

接上一篇:写一个python文件,在shell脚本中运行

1.来了解下 parser.add_argument函数的参数

可以看下下面的一个参数例子


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('-b', '--batch_size', type=int, default=64)
    parser.add_argument('-i', '--image_directory', type=str, default='FGNET/images')
    parser.add_argument('-ls', '--leave_subject', type=int, default=1)
    parser.add_argument('-lr', '--learning_rate', type=float, default=0.001)
    parser.add_argument('-e', '--epoch', type=int, default=100)
    parser.add_argument('-r', '--resume', type=str, default=None)
    parser.add_argument('-K', '--K', type=int, default=6)
    parser.add_argument('-L1', '--LAMBDA1', type=float, default=0.2)
    parser.add_argument('-L2', '--LAMBDA2', type=float, default=0.25)
    parser.add_argument('--net', type=str, default='ResNet', help='VGG/ResNet')
    parser.add_argument('-s', '--seed', type=int, default=42)
    parser.add_argument('-m', '--milestones', nargs='+', required=True, default=15)  # -m 是一个短选项参数,后面跟着一系列值 15 30 45 60 75 90,表示将这些值作为参数传递给 -m。
    parser.add_argument('-rd', '--result_directory', type=str, default="FGNET_experiments/subject")
    parser.add_argument('-pi', '--pred_image', type=str, default=None)
    parser.add_argument('-pm', '--pred_model', type=str, default=None)
    parser.add_argument('-K', '--K', type=int, default=6)
    parser.add_argument('--loss', type=str, default='mrloss', help='mean_softmax/residual_softmax/softmax/mrloss/mvloss')
    parser.add_argument('--SGD', action='store_true')
    parser.add_argument('--Adam', action='store_true')
    parser.add_argument('--gpu', type=int, default=2, help='GPU to use')
    return parser.parse_args()

参数详解 

name or flags:参数的名称或选项。可以是一个字符串,例如 '--batch_size''-b',也可以是一个字符串列表,例如 ['-b', '--batch_size'],其中 --batch_size 是长选项,-b 是短选项。

type:表示输入参数的类型,可以是int,str,float

default:表示参数默认的值

help: 帮助信息,例如help='VGG/ResNet' 提供了关于该参数的帮助信息,当用户使用 -h--help 选项时,该信息将显示在帮助文档中。

nargs:用于定义一个选项参数应该消耗的命令行参数数量。它可以接受以下不同的取值:

  • '+':表示选项参数可以接受一个或多个参数值。多个参数值将被解析为一个列表。例如,-m 15 30 45 将解析为 args.milestones = [15, 30, 45]

  • '*':表示选项参数可以接受零个或多个参数值。多个参数值将被解析为一个列表。例如,-m 15 30 45 将解析为 args.milestones = [15, 30, 45],而不提供 -m 参数将解析为 args.milestones = []

  • int:表示选项参数应该消耗固定数量的参数值。例如,nargs=2 表示选项参数需要接受两个参数值。例如,-m 15 30 将解析为 args.milestones = [15, 30]

  • argparse.REMAINDER:表示选项参数应该消耗剩余的命令行参数,将其解析为一个列表。例如,-m 15 30 45 60 75 90 将解析为 args.milestones = [15, 30, 45, 60, 75, 90]

required:指定该参数是否是必需的。默认为 False,即可选参数。如果将其设置为 True,则在命令行中必须提供该参数,否则将引发错误。

choices:指定参数的可选值列表。如果设置了该参数,那么命令行中提供的值必须是列表中的一个,否则将引发错误。

action:指定参数的动作。常见的动作包括 'store'(默认动作,将参数值存储为属性)、'store_true'(将参数解析为 True)、'store_false'(将参数解析为 False)、'append'(将多个参数值存储为列表)等。

2.看下如何运用--heip

help.py

import argparse


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--net', type=str, default='ResNet', help='VGG/ResNet')


    return parser.parse_args()


def main():
    args = get_args()

    # 获取命令行参数的值
    net = args.net

    # 在这里使用参数进行相应的操作
    print(f"net: {net}")


if __name__ == '__main__':
    main()

使用shell命令行查看帮助信息,一般代码是自己写,不会看的哈!

python filename.py --help
python filename.py -h

3.看下action四个参数的区别

 help.py文件

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--input', action='store', type=str, help='Input file path')
    parser.add_argument('--verbose', action='store_true', help='Enable verbose mode')
    parser.add_argument('--output', action='append', help='Output file path')

    args = parser.parse_args()

    # 使用解析后的参数进行后续处理
    if args.input:
        print(f'Input file: {args.input}')

    if args.verbose:
        print('Verbose mode enabled')

    if args.output:
        print(f'Output files: {args.output}')

if __name__ == '__main__':
    main()

 store_false与store_true一样,知识默认识别为真和假。

  • --input 参数使用了默认的 store 动作,将输入文件路径存储为字符串类型的属性。

  • --verbose 参数使用了 store_true 动作,将其解析为布尔值类型的属性。当命令行中使用了 --verbose 选项时,args.verbose 的值将为 True

  • --output 参数使用了 append 动作,将多个输出文件路径存储为列表类型的属性。在命令行中多次使用 --output 选项并提供不同的值,例如 --output file1.txt --output file2.txt,则 args.output 将包含 ['file1.txt', 'file2.txt']

4.发现参数使用了nargs='+'参数,没法赋初值

运行1中给的代码,就会报错。

 没法debug,只好将那行参数注释,在主函数中赋初值给milestones,再debug看看。改代码真的要耐着性子,不然一有错,就不想搞了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java-函数式接口和Stream流

java-函数式接口和Stream流 一、函数式接口 1.1函数式接口概述 概念 有且仅有一个抽象方法的接口 如何检测一个接口是不是函数式接口 FunctionalInterface 放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败…

K8S系列文章之基础理论篇

第一部分:理解控制器 简介:当我们尝试去理解 Kubernetes 集群工作原理的时候,控制器肯定是一个难点。这是因为 控制器有很多,具体实现大相径庭;且控制器的实现用到了一些较为晦涩的机制,不易理解。但 是&a…

2023轻松斩获5家大厂offer后的面试总结!

2023年能这么轻松地斩获5家大厂offer,其实这些功劳都要归功于阿里团队的这份软件测试核心知识文档,小编今天在此分享出来,也希望能帮助更多的小伙伴拿到更多高薪的offer; 内容涉及:测试理论、Linux基础、MySQL基础、W…

【小张和Oracle数据库】Java两年半练习生裁员后竟然找到了一份DBA的工作?

一、引言 大家好,我叫张小念(小名念念),家里人都叫宝儿。 一个java两年半的练习生,经历了起起伏伏的疫情时代,终于在java一行也算是入了门。 但是,计划永远赶不上变化, 有一天经…

Makerbase SimpleFOC ESP32 例程3 I²C双编码器测试(AS5600)

Makerbase SimpleFOC ESP32 例程3 IC双编码器测试(AS5600) 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12YT2804电机2312V电源适配器14USB 线156pin杜邦线2 注意:YT2804是改装的云台无刷电机,带有AS5600编码器,可实现360连续运…

Makerbase SimpleFOC ESP32 例程2 双电机开环位置测试

Makerbase SimpleFOC ESP32 例程2 双电机开环位置测试 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12YT2804电机2312V电源适配器14USB 线1 注意:YT2804是改装的云台无刷电机,带有AS5600编码器,可实现360连续运转。 主要参数如…

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一…

菱形图案打印、水仙花数、买汽水

目录 菱形图案打印 上三角 下三角 拓展:带空格直角三角形图案 代码一 代码二 水仙花数 拓展:变种水仙花数 买汽水 代码一 代码二 妙用汽水瓶 菱形图案打印 题目要求 其实呢这道题很多人想到直接用printf()进行输出,我想说的是&#…

开源:小狐狸GPT付费AI-v2.0.0 H5和小程序端增加使用手册

小狐狸GPT付费AI体验系统、系统版本更新至1.2.0,源码为小程序、H5、WEB版本,购买含更新,独立版;开源、开源、开源、可二开!!200包含H5、web的vue全开源,最新版更新了:H5和小程序端增…

打造一个你自己图标exe的Python脚本启动器

目录 1. 背景需求2. 需求软件3. 准备图标4. 编译命令4.1 使用Windows API4.2 使用-mwindows参数编译4.3 使用pythonw.exe解释器 5. 测试运行5.1 参考代码5.2 使用效果 1. 背景需求 有时候为了确保多平台的兼容性,需要开发绿色版的应用程序,也就是在嵌入…

windows server 查看登录日志

windows server 查看登录日志 1、 先要开启登录审核,在查看登录日志 点击 “服务器管理器” – > “工具” – > “本地安全策略” 点击 “本地策略” – > “点击审核策略” 审核 成功 和 失败的记录(可以全选也可以选择需要审计的操作&am…

Linux pthread_create源码分析

前言 本文介绍pthread_create函数的使用和源码分析。 /include/pthread.h bionic/libc/bionic/pthread_create.cpp bionic/libc/bionic/pthread_attr.cpp pthread_create使用 Android中的绝大部分线程,最后都是通过pthread_create创建的。 int pthread_create(p…

【LeetCode热题100】打卡第11天:有效括号合并两个有序链表

文章目录 【LeetCode热题100】打开第11天⛅前言🔒有效括号🔑题解🔒合并两个有序链表🔑题解💡思路一:合并到第三方链表上🔐【非递归实现】🔐【递归实现】 💡思路二 &#…

2023年上半年数据库系统工程师下午真题及答案解析

试题一(15分) 某新能源汽车公司为了提升效率,需开发一个汽车零件采购系统。请完成系统的数据库设计。 概念结构设计 需求描述 (1)记录供应商信息,包括供应商的名称、地址和一个电话。 (2)记录零件信息,包括零件的编码、名称和价格。 (3)…

线程的四个属性

如上图所示,线程有四个属性: 线程ID线程名称守护线程线程优先级 1. 线程ID 每个线程都有id,这个id不能修改 线程id会不停的自增,从1开始 main函数就是第一个线程,id1 id 是操作系统用来识别各个线程的编号&#…

DHVT:在小数据集上降低VIT与卷积神经网络之间差距,解决从零开始训练的问题

VIT在归纳偏置方面存在空间相关性和信道表示的多样性两大缺陷。所以论文提出了动态混合视觉变压器(DHVT)来增强这两种感应偏差。 在空间方面,采用混合结构,将卷积集成到补丁嵌入和多层感知器模块中,迫使模型捕获令牌特征及其相邻特征。 在信…

tcp shrinking window 之进退

一个有趣的问题:Unbounded memory usage by TCP for receive buffers, and how we fixed it 引出一个 kernel patch:[PATCH] Add a sysctl to allow TCP window shrinking in order to honor memory limits 但这 patch 把一个问题变成了两个问题&#…

apple pencil一代的平替有哪些品牌?平价电容笔推荐

要知道,真正的苹果原装电容笔,价格可不低,仅仅一支就是近千块。实际上,平替电容笔对没有太多预算的用户是个不错的选择。一款苹果的电容笔的售价,相当于平替电容笔的四倍,不过平替电容笔的书写体验&#xf…

pnpm对npm及yarn降维打击详解

目录 正文npm2yarnpnpm总结 正文 大家最近是不是经常听到 pnpm,我也一样。今天研究了一下它的机制,确实厉害,对 yarn 和 npm 可以说是降维打击。 那具体好在哪里呢? 我们一起来看一下。 我们按照包管理工具的发展历史&#xf…

3.5 凸多边形最优三角部分

博主简介:一个爱打游戏的计算机专业学生博主主页: 夏驰和徐策所属专栏:算法设计与分析 1.什么是多边形的三角剖分? 多边形三角剖分是指将多边形分割成互不相交的三角形的弦的集合T。 我的理解: 多边形三角剖分是将给…