python argparse命令行参数解析(推荐)
作者:MusicDancing 发布时间:2022-06-26 05:47:25
argparse是python用于解析命令行参数和选项的标准模块。
很多时候,需要用到解析命令行参数的程序,目的是在终端窗口输入训练的参数和选项。
argparse 模块可以让人轻松编写用户友好的命令行接口。
程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
test.py
# -*- coding: utf-8 -*-
import argparse
# (1) 声明一个parser对象,该对象包含将命令行解析成 Python 数据类型所需的全部信息。
ap = argparse.ArgumentParser(description='Process some integers.')
# (2) 添加参数
ap.add_argument("first") # 位置参数,这里表示第一个出现的参数赋值给first
ap.add_argument("--digit", type=int, help="输入数字") # 声明一个int类型参数
ap.add_argument("--name", help="名字", default="dog") # 同上,default 表示默认值
# (3) 读取命令行参数
args = ap.parse_args()
# (4) 调用这些参数
print(args.first)
print(args.digit)
print("name = {}".format(args.name))
调用
python test.py position_arg --name qwe
ArgumentParser对象
(1)prog - 程序的名称(默认: sys.argv[0])
(2)usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
(3)description - 在参数帮助文档之后显示的文本 (默认值:无)
(4)epilog - 在参数帮助文档之后显示的文本(默认值:无)
(5)parents - 一个 ap对象的列表,它们的参数也应包含在内
(6)formatter_class - 用于自定义帮助文档输出格式的类
(7)prefix_chars - 可选参数的前缀字符集合(默认值:'-')
(8)fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
(8)argument_default - 参数的全局默认值(默认值: None)
(9)conflict_handler - 解决冲突选项的策略(通常是不必要的)
(10)add_help - 为解析器添加一个 -h/–help 选项(默认值: True)
(11)allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)
add_argument()方法
(1)name or flags - 一个命名或者一个选项字符串的列表。(例如 foo 或 -f, --foo)
(2)action - 表示该选项要执行的操作
(3)default - 默认值
(4)dest - 用来指定参数的位置,被添加到 parse_args() 所返回对象上的属性名。
(5)type - 为参数类型。(例如int)
(6)choices - 用来选择输入参数的范围。(例如choice = [1, 5, 10])
(7)help - 用来描述这个选项的作用
(8)nargs - 命令行参数应当消耗的数目。
(9)const - 被一些 action 和 nargs 选择所需求的常数。
(10)required - 此命令行选项是否可省略 (仅选项可用)。
(11)metavar - 在使用方法消息中使用的参数值示例。
import argparse
import logging
"""
" File Description:
" dump model && deploy
"
" Created by zz on 2021/6/22.
" Mail: zz@baidu.com
"""
logging.basicConfig(level=logging.DEBUG)
def parse_args():
ap = argparse.ArgumentParser(prog="deploy tool", description='dump or calib model && deploy')
ap.add_argument("deploy_path", type=str, help="deploy base path")
ap.add_argument("exp_name", type=str, help="train exp name")
subparser = ap.add_subparsers(title="model deploy subparser", dest="mode")
# subparser
model_deploy_parser = subparser.add_parser("model", help="model deploy")
model_deploy_parser.add_argument("--default", default=False, type=bool, help="whether that's default model")
calib_deploy_parser = subparser.add_parser("calib", help="offline calib deploy")
calib_deploy_parser.add_argument("--input", required=True, type=str, help="model offline calib file")
args = ap.parse_args()
return args
# global args
args = parse_args()
mode = args.mode
deploy_path = args.deploy_path
exp_name = args.exp_name
def main():
if mode == "model":
_deploy_model()
elif mode == "calib":
_deploy_calib()
else:
logging.error( "Mode error")
if __name__ == '__main__':
main()
来源:https://blog.csdn.net/MusicDancing/article/details/118153920


猜你喜欢
- selenium关闭窗口有两个方法,close与quit,我们稍作研究便知道这两个方法的区别。1.看源码或API这是close()的说明:C
- 这篇论坛文章(赛迪网技术社区)着重介绍了有关SQL注入防御的防御策略及实施步骤,详细内容请参考下文:从去年下半年开始,很多网站被损害,他们在
- 使用webpack搭建单页面程序十分常见,但在实际开发中我们可能还会有开发多页面程序的需求,因此我研究了一下如何使用webpack搭建多页面
- parquet数据:列式存储结构,由Twitter和Cloudera合作开发,相比于行式存储,其特点是:可以跳过不符合条件的数据,只读取需要
- 本文实例讲述了JavaScript变量提升和严格模式。分享给大家供大家参考,具体如下:1.什么是变量提升所谓的变量提升指的是:函数声明和变量
- 1 Git简介Git 是目前世界上最先进的分布式版本控制系统(没有之一)作用: 源代码管理为什么要进行源代码管理?
- 导入所需库%matplotlib inlineimport sympyimport numpy as npimport matplotlib
- Python是静态作用域语言,但是它自身是一个动态语言。在Python中变量的作用域是由变量在代码中的位置决定的,与C语言有些相似,但不是完
- 本文实例为大家分享了python简单实现图片文字分割的具体代码,供大家参考,具体内容如下原图:图片预处理:图片二值化以及图片降噪处理。# 图
- 打开SQL Server企业管理器,突然弹出一个窗口,内容是: 错误提示: “Microsoft Management Console ——
- 本文实例讲述了JavaScript闭包与作用域链。分享给大家供大家参考,具体如下:闭包定义闭包指的是有权访问另一个函数作用域中的变量的函数。
- 简介testify可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了。testify提供了很多方便的函数帮助我们做as
- Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为A
- 上次成功升级了最土商业版,接下来就是整合公司的社区网站,先说明一下我现在工作的地方是个地方社区网站,用的基础程序是PHPWind,我的任务就
- 目录写在前面基本概念Windows搭建python开发环境从Hello World开始博客总结从大学开始玩python到现在参加工作,已经有
- 遇见了表中存在重复的记录的问题,直接写sql删除时最快的,才不要慢慢的复制到excel表中慢慢的人工找呢如下sql,找出重复的记录,和重复记
- 语句如下:alter table tableName engine=InnoDB; 用到的表 CREATE TABLE IF NOT EXI
- 前言昨天上线后通过系统报警发现了一个bug,于是紧急进行了回滚操作,但是期间有用户下单,数据产生了影响,因此需要排查影响了哪些订单,并对数据
- 如: 2000-1-1==> 2000-01-01、2000-01-1==>2000-01-01、2000-1-01==>
- 函数的参数:Python中函数定义非常简单,由于函数参数的存在,使函数变得非常灵活应用广泛;不但使得函数能够处理复杂多变的参数,还能简化函数