python argparse命令行参数解析(推荐)

 更新时间:2021年06月24日 17:12:50   作者:MusicDancing  
Python argparse模块是解析命令行参数的首选方法。解析命令行参数是一个非常常见的任务,Python脚本根据传递的值来执行和操作

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()

到此这篇关于python argparse命令行参数解析的文章就介绍到这了,更多相关python argparse命令行参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python pickle模块用法实例分析

    Python pickle模块用法实例分析

    这篇文章主要介绍了Python pickle模块用法,实例分析了pickle模块的功能与相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • OpenCV形状检测的示例详解

    OpenCV形状检测的示例详解

    本文主要介绍了OpenCV中的形状检测,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • pyqt5 实现在别的窗口弹出进度条

    pyqt5 实现在别的窗口弹出进度条

    今天小编就为大家分享一篇pyqt5 实现在别的窗口弹出进度条,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python利用pynput实现划词复制功能

    Python利用pynput实现划词复制功能

    这篇文章主要为大家想详细介绍了Python如何利用pynput实现划词复制功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-05-05
  • python 获取微信好友列表的方法(微信web)

    python 获取微信好友列表的方法(微信web)

    今天小编就为大家分享一篇python 获取微信好友列表的方法(微信web),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 用Python操作字符串之rindex()方法的使用

    用Python操作字符串之rindex()方法的使用

    这篇文章主要介绍了用Python操作字符串之rindex()方法的使用,是Python入门的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python轻松读写TOML文件实现示例

    Python轻松读写TOML文件实现示例

    这篇文章主要介绍了Python轻松读写TOML文件实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 如何使用python获取现在的日期与时间

    如何使用python获取现在的日期与时间

    学习了一段时间的python,不知道大家对于代码的编写有了属于自己的一套思路了呢,下面这篇文章主要给大家介绍了关于如何使用python获取现在的日期与时间的相关资料,需要的朋友可以参考下
    2022-11-11
  •  python用matplotlib可视化绘图详解

     python用matplotlib可视化绘图详解

    这篇文章主要介绍了 python用matplotlib可视化绘图详解,Matplotlib 是一个python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,下面我们就来看看关于matplotlib可视化绘图的详细过程吧
    2022-01-01
  • PyTorch之关于hook机制

    PyTorch之关于hook机制

    这篇文章主要介绍了PyTorch之关于hook机制的理解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论