python的ArgumentParser使用及说明

 更新时间:2023年08月02日 15:47:14   作者:黄色摩托  
这篇文章主要介绍了python的ArgumentParser使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python的ArgumentParser使用

ArgumentParser是python用来标准化处理sys.argv

#!/usr/bin/env python
# coding: utf8
from argparse import ArgumentParser
OPT_BOOK = {
    'dest': 'book',
    'nargs': '+',
    'help': 'Which book do you want study',
    'required': True
}
OPT_PAGE = {
    'dest': 'page',
    'nargs': '+',
    'help': 'Pages of book to study',
    'required': True
}
OPT_ITEM = {
    'dest': 'item',
    'nargs': '+',
    'help': 'Pages of book to study',
    'required': True
}
OPT_WORD = {
    'dest': 'word',
    'nargs': '+',
    'help': 'Pages of book to study',
    'required': True
}
def _create_parser(parser_factory):
    """ 创建二级命令
    """
    parser = parser_factory('project', help='Study project')
    parser.add_argument('-b', '--book', **OPT_BOOK)
    parser.add_argument('-p', '--page', **OPT_PAGE)
    parser.add_argument('-i', '--item', **OPT_ITEM)
    parser.add_argument('-w', '--word', **OPT_WORD)
    return parser
def create_argument_parser():
    """ 创建一级命令
    """
    parser = ArgumentParser(prog='study')
    subparsers = parser.add_subparsers()
    subparsers.dest = 'project'
    subparsers.required = True
    _create_parser(subparsers.add_parser)
    return parser

简单的使用按照以上方式来做,用程序名构造ArgumentParser(这里是study),随意给一个父命令add_subparsers(这里是project),然后建立解析工厂parser_factory(这里是project和父命令同名),最后给一堆的参数输入型命令add_argument(这里是book,page,item,word,可以用不定参字典,给予帮助信息或必传等选项)

这里是test方法:

#!/usr/bin/env python
# coding: utf8
import sys
from utils.logger import get_logger
from utils.commander import create_argument_parser
if __name__ == '__main__':
    parser = create_argument_parser()
    arguments = parser.parse_args(sys.argv[1:])
    get_logger().info(arguments.project)
    get_logger().info(arguments.book)
    get_logger().info(arguments.page)
    get_logger().info(arguments.item)
    get_logger().info(arguments.word)

这里是输出:

[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:project}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['book-a']}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['32']}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['what', 'is', 'item']}
[INFO]:2021-02-02 17:16:01,074:{TFSpleeter:['fuck']}

python对象属性ArgumentParser,Namespace

1. ArgumengParser

1.1. 作用

分配属性,可以从python执行命令参数中获取

1.2. 导包

# python
from argparse import ArgumentParser

1.3. 参数

ArgumentParser(prog=None)
  • prog:显示的程序名,不填则默认是文件名

1.4. 属性

  • 1.4.1. add_argument(*args, **kwargs)

声明创建属性的规则

参数

  • 第一个参数: 必填,键名,格式:"-a"或"–a"
  • dest: 非必填,参数名重置为
  • default: 非必填,默认值
  • type: 非必填,参数类型
  • choices: 非必填,可选值,格式:列表,元组
  • required: 非必填,是否必填,默认False
  • namespace: 非必填,分配属性的对象
  • help: 非必填,说明文字

举个栗子

# python
b = B()
parser = ArgumentParser()
parser.add_argument('--foo', dest='jjj', type=str, required=True)
parser.add_argument('-env', choices=['test', 'prod'])
  • 1.4.2. parse_args(args=None, namespace=None)

将参数转为对象,并将属性分配给命名空间

参数

  • args:非必填,赋值列表,必须一一对应
  • namespace: 非必填,分配属性的对象

举个栗子

1.代码行分配

# python
a = parser.parse_args(['--foo', 'werw', '-env', '234'])
print(a.env)
# 输出 234
b = B()
parser.parse_args(['--foo', 'werw', '-env', '234'], namespace=b)
print(b.env)
# 输出 234

2.启动命令分配

# linux
python3 test.py --foo='www' -evn='234'

2. Namespace 命名空间

2.1. 作用

创建一个包含属性的对象,返回该对象

2.2. 导包

# python
from argparse import Namespace

2.3. 用法

# python
a = Namespace(env='test', level=2)
print(a.evn)
# 输出 test
print(a.level)
# 输出 2

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pybaobabdt库基于python的决策树随机森林可视化工具使用

    pybaobabdt库基于python的决策树随机森林可视化工具使用

    这篇文章主要为大家介绍了pybaobabdt库基于python的决策树随机森林可视化工具使用探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • Playwright设置base_url的三种方式

    Playwright设置base_url的三种方式

    本文主要介绍了三种在使用Playwright或pytest-playwright进行Web自动化测试时设置base_url的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01
  • 如何使用Python实现斐波那契数列

    如何使用Python实现斐波那契数列

    这篇文章主要介绍了如何使用Python实现斐波那契数列,斐波那契数列(Fibonacci)最早由印度数学家Gopala提出,而第一个真正研究斐波那契数列的是意大利数学家 Leonardo Fibonacci,需要的朋友可以参考下
    2019-07-07
  • 你需要学会的8个Python列表技巧

    你需要学会的8个Python列表技巧

    这篇文章主要介绍了8个常用的Python列表技巧,文中讲解非常详细,帮助大家更好的学习Python,感兴趣的朋友可以了解下
    2020-06-06
  • python中for in的用法详解

    python中for in的用法详解

    这篇文章主要介绍了python中for in的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Matplotlib绘制混淆矩阵的实现

    Matplotlib绘制混淆矩阵的实现

    对于机器学习多分类模型来说,其评价指标除了精度之外,常用的还有混淆矩阵和分类报告,下面来展示一下如何绘制混淆矩阵,这在论文中经常会用到。感兴趣的可以了解一下
    2021-05-05
  • Python dbm库利用键值对存储数据

    Python dbm库利用键值对存储数据

    Python中的dbm模块提供了一种轻量级的数据库管理工具,允许开发者使用键值对的形式存储和检索数据,这篇文章将深入介绍dbm库的使用,探讨其基础功能、高级特性以及实际应用场景
    2023-12-12
  • python魔法方法-属性转换和类的表示详解

    python魔法方法-属性转换和类的表示详解

    下面小编就为大家带来一篇python魔法方法-属性转换和类的表示详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • Python+Sklearn实现英文文本关键词提取的完整代码

    Python+Sklearn实现英文文本关键词提取的完整代码

    在自然语言处理(NLP)的文本分析领域,TF-IDF 是实现关键词提取的经典加权算法,能精准筛选出文本中兼具单篇高频和语料库低频的核心词汇,本文将基于Python+Sklearn,针对英文文本实现 TF-IDF 的全流程实战,需要的朋友可以参考下
    2026-03-03
  • 零基础带你掌握Python Openpyxl单元格样式修改指南

    零基础带你掌握Python Openpyxl单元格样式修改指南

    在日常办公中,我们经常需要处理大量的 Excel 表格,本篇文章将系统地带你走进 openpyxl 的样式修改世界,无论你是编程小白还是有一定基础的学习者,只要跟着本文的步骤,都能轻松让你的自动化表格漂亮起来
    2026-03-03

最新评论