Python argparse 解析命令行参数模块详情

目录
  • 一、预备知识
    • 1、安装
    • 2、使用的一般步骤
  • 二、实操笔记
    • 1、函数详解
      • 1.1ArgumentParser
      • 1.2add_argument
    • 2、调用实例

一、预备知识

argparsepython用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。argparse模块的作用是用于解析命令行参数。

1、安装

argsparsepython的命令行解析的标准模块,内置于python,不需要安装。使用的时候直接:

import argparse

2、使用的一般步骤

这个模块使用起来十分简单,就类似于 造(买)个冰箱→在冰箱里面放点食材→需要的时候把食材拿出来做出美味的食物。

它的使用分为三步:

# 1.创建一个解析对象;
parser = argparse.ArgumentParser()
# 2.然后向该对象中添加你要关注的命令行参数和选项,
#   每一个 add_argument 方法对应一个你要关注的参数或选项;
parser.add_argument()
# 3. 最后调用 parse_args()方法进行解析;
parser.parse_args()

另外,关于参数的书写习惯,有如下几种:

  • 空格分开,最常用,比如parser.parse_args('-x X'.split())
  • 长选项用=分开 ( “长”选项名字,即选项的名字多于一个字符),比如parser.parse_args('--foo=FOO'.split())
  • ​​​​​​​短选项可以写在一起,比如parser.parse_args('-xX')

二、实操笔记

上面简要介绍了使用的基本步骤,下面首先详细介绍涉及到的几个函数,然后再给一个实例。

1、函数详解

1.1ArgumentParser

这个函数的作用就是创建一个解析对象(冰箱),下面是它的参数列表:

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)

参数含义如下所示:

  • prog:程序的名字,默认为sys.argv[0],用来在help信息中描述程序的名称。
  • usage:描述程序用途的字符串
  • description:help信息前的文字。
  • epilog:help信息之后的信息
  • add_help:设为False时,help信息里面不再显示-h --help信息。
  • prefix_chars:参数前缀,默认为-
  • ​​​​​​​fromfile_prefix_chars:前缀字符,放在文件名之前
  • argument_default:参数的全局默认值。
  • conflict_handler:对冲突的处理方式,默认为返回错误“error”。还有“resolve”,智能解决冲突。当用户给程序添加了两个一样的命令参数时,“error”就直接报错,提醒用户。而“resolve”则会去掉第一次出现的命令参数重复的部分或者全部(可能是短命令冲突或者全都冲突)。

1.2add_argument

此函数用来指定程序需要接受的命令参数,它的参数列表如下所示:

add_argument(name or flags...
[, action]
[, nargs]
[, const]
[, default]
[, type]
[, choices]
[, required]
[, help]
[, metavar]
[, dest])
# 注:[] 表示可选

参数含义如下:

  • name or flags:参数有两种,可选参数和位置参数。parse_args()运行时,会用-来认证可选参数,剩下的即为位置参数。位置参数必选,可选参数可选。
  • action:参数动作;argparse内置6种动作可以在解析到一个参数时进行触发:store 保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。store_const 保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。store_ture/store_false 保存相应的布尔值。这两个动作被用于实现布尔开关。append 将值保存到一个列表中。若参数重复出现,则保存多个值。append_const 将一个定义在参数规格中的值保存到一个列表中。version 打印关于程序的版本信息,然后退出。 count统计参数出现的次数。
  • nargs:参数的数量。值可以为整数N(N个),*(任意多个),+(一个或更多),值为?时,首先从命令行获得参数,若没有则从const获得,然后从default获得:
  • dest:参数值就保存为parse_args()返回的命名空间对象中名为该 dest 参数值的一个属性。如果提供dest,例如dest="a",那么可以通过args.a访问该参数
  • default:设置参数的默认值
  • type:把从命令行输入的结果转成设置的类型
  • choice:允许的参数值
  • required:是否必选
  • desk:可作为参数名
  • help:参数命令的介绍

2、调用实例

下面给个简单的示例,只是说明如何调用而已,后续可根据上面对函数的详细解释来使其更实用智能。

import argparse
parser = argparse.ArgumentParser(description ="This is a Test!")
parser.add_argument("type",choices=['scheduler','tool'],
                    help="make application type")
parser.add_argument('-c',dest='configurefile',help="configure file")
parser.print_help()
args = parser.parse_args(["tool","-c","a.ini"])
print(args.type)
print(args.configurefile)
# --------------output------------------
usage: draft.py [-h] [-c CONFIGUREFILE] {scheduler,tool}

This is a Test!

positional arguments:
  {scheduler,tool}  make application type

optional arguments:
  -h, --help        show this help message and exit
  -c CONFIGUREFILE  configure file
tool
a.ini

这个简单的例子就,就创建了一个argparse对象,然后加了两个参数(不算-h),一个是必选参数tool,另一个是可选参数-c,然后使用dest将其转换为参数的一个属性。
ps:其实一开始笔者遇到了一个问题,一开始笔者在必选参数前加了type,其实是不用的,对于必选参数直接给值即可。
另外,当有多个必选参数时,需要注意必选参数的顺序一定要和加参数的顺序保持一致。
可选参数和必选参数可以交换顺序,只需保持可选参数与值不要分开,必选参数的相对顺序与加参数的顺序保持一致即可!

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

(0)

相关推荐

  • Python解析命令行读取参数--argparse模块使用方法

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写起来更麻烦一些. 如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式).比如如下名为test.py的脚本: import sys print "Input argument is %s" %(sys.argv[0]

  • Python详解argparse参数模块之命令行参数

    目录 前言 示例一:最简参数对象 示例二:整数求和 示例三:文件是否被篡改 自定义类型 choices选项限定 required必选参数 子命令 前言 help(argparse)查看说明文档,“argparse - Command-line parsing library”我们可以知道是一个命令行解析库,是关于参数解析相关的一个模块. 示例一:最简参数对象 先来一段简单的代码,快速熟知下这个参数是个啥.保存为t.py这样一个文件 import argparse parser = argpars

  • Python如何使用argparse模块处理命令行参数

    这篇文章主要介绍了Python如何使用argparse模块处理命令行参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 介绍 argparse是python3标准库里用来处理命令行参数的模块 使用三步走: 创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() 解析添加的参数 实例 我们先来创建一个python文件 vim test.py 然后开始在输入模式(i)下输入代码

  • Python 利用argparse模块实现脚本命令行参数解析

    study.py内容如下 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'shouke' import argparse def argparseFunc(): ''' 基于argparse模块实现命令参数解析功能 执行示例: python study.py -i 172.19.7.236 -p 8080 -a -r python study.py --ip 172.19.7.236 --port 7077 --auth -w

  • Python解析命令行读取参数之argparse模块

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包 使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写起来更麻烦一些. 如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利用sys.argv将脚本后的参数依次读取(读进来的默认是字符串格式).比如如下名为test.py的脚本: import sys print "Input argument is %s" %(sys.argv)

  • Python argparse 解析命令行参数模块详情

    目录 一.预备知识 1.安装 2.使用的一般步骤 二.实操笔记 1.函数详解 1.1ArgumentParser 1.2add_argument 2.调用实例 一.预备知识 argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数. 1.安装 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.使用的时候直接: import argparse 2.使用的一般步骤 这

  • Python 中使用 argparse 解析命令行参数

    目录 1.Python 中的参数解析 2.类型 3.子命令 4.程序架构 使用 argparse 模块为应用程序设置命令行选项. 有一些第三方库用于命令行解析,但标准库 argparse 与之相比也毫不逊色. 无需添加很多依赖,你就可以编写带有实用参数解析功能的漂亮命令行工具. 1.Python 中的参数解析 使用 argparse 解析命令行参数时,第一步是配置一个 ArgumentParser 对象.这通常在全局模块内完成,因为单单_配置_一个解析器没有副作用. import argpars

  • python 如何利用argparse解析命令行参数

    命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码当中的话,我们每次修改参数都需要修改对应的代码和逻辑显然这不太方便.比较好的办法就是把必要的参数设置成通过命令行传入的形式,这样我们只需要在运行的时候修改参数就可以了. sys.argv 解析命令行传入参数最简单的办法就是通过sys.argv,sys.argv可以获取到我们通过命令行传入的参数. import sys print(sys.argv) 用法很简单,只需要调用sys.argv即可.a

  • Python实现解析命令行参数的常见方法总结

    目录 简介 基本形式 3种常见的获取和解析命令行参数的方法 sys.argv案例 案例源码1 案例源码2 案例1 案例2 案例3 案例4 简介 除ide的执行方式外,命令行的方式执行Python脚本是参数化程序执行的一种常见且简单的方法,正确处理命令行参数,可以提供给包含某种参数化信息的程序或脚本的参数.例如处理目录或者文件通常作为命令行参数传递给脚本,用于使程序可以处理不同图片或者不同类型文件. 基本形式 python main.py -a v1 -b v2 ... 3种常见的获取和解析命令行

  • Python argparse模块实现解析命令行参数方法详解

    argparse是Python的一个标准模块,用于解析命令行参数,即解析sys.argv中定义的参数.实现在:传送门 argparse模块还会自动生成帮助和使用信息,即在最后加-h或--help.当用户输入的参数无效时,会触发error,并给出出错原因. python test_argparse.py -h python test_argparse.py --help 使用argparse的步骤: 1.创建解析器:argparse.ArgumentParser(),ArgumentParser是

  • Python处理命令行参数模块optpars用法实例分析

    本文实例讲述了Python处理命令行参数模块optpars用法.分享给大家供大家参考,具体如下: optpars是python中用来处理命令行参数的模块,可以自动生成程序的帮助信息,功能强大,易于使用,可以方便的生成标准的,符合Unix/Posix 规范的命令行说明. 使用 add_option() 来加入选项,使用 parse_args() 来解析命令行. add_option()中参数 第一个参数表示option的缩写,以单个中划线引导,例如-f.-d,只能用单个字母,可以使用大写; 第二个

  • python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法:sys.argv.argparse解析.getopt解析 方法一:sys.argv -- 命令行执行:python test_命令行传参.py 1,2,3 1000 # test_命令行传参.py import sys def para_input(): print(len(sys.argv)) #

  • Python中的命令行参数解析工具之docopt详解

    前言 docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt.它在 README 中就已经做了详细的介绍,并且还附带了很多例子可供学习,这篇文章也是翻译一下 README 中内容-- docopt 最大的特点在于不用考虑如何解析命令行参数,而是当你把心中想要的格式按照一定的规则写出来后,解析也就完成了. docopt的安装 docopt有很多种版本,分别支持不同的语言,最简答的docopt支持python脚本,docopt.java支持java脚

  • Node.js 中如何收集和解析命令行参数

    前言 在开发 CLI(Command Line Interface)工具的业务场景下,离不开命令行参数的收集和解析. 接下来,本文介绍如何收集和解析命令行参数. 收集命令行参数 在 Node.js 中,可以通过 process.argv 属性收集进程被启动时传入的命令行参数: // ./example/demo.js process.argv.slice(2); // 命令行执行如下命令 node ./example/demo.js --name=xiaoming --age=20 man //

  • linux shell 解析命令行参数及while getopts用法小结

    目录 linux shell 解析命令行参数|getpots getpots linux shell 解析命令行参数|getpots demo: #!/bin/bash func() { echo "Usage:" echo "test.sh [-j S_DIR] [-m D_DIR]" echo "Description:" echo "S_DIR,the path of source." echo "D_DIR,

随机推荐