python中argparse模块基础及使用步骤

目录
  • argparse模块用法
  • 一、 概念
  • 二、 基础
    • 1、 使用步骤
      • 1.1 总步骤
      • 1.2 创建对象
      • 1.3 添加参数
      • 1.4 解析参数
  • 三、 使用案例

argparse模块用法

一、 概念

argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行。

官方文档的位置:【https://docs.python.org/zh-cn/3/library/argparse.html

在这里我们利用git来演示命令行运行

git -h
git -version
git show

二、 基础

1、 使用步骤

1.1 总步骤

1.导包:
import argparse
2.创建对象:
parser = argparse.ArgumentParser()
3.添加参数:
parser.add_argument()
4.解析参数:
parser.parse_args()

1.2 创建对象

parser = 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)

参数说明:

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

1.3 添加参数

add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

参数说明:

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

参数的几种写法:

python py.py -i 1  # 使用空格分开
python py.py --integer=1  # 长选项使用等号分开
python py.py -i1  # 短选项可以写一起

1.4 解析参数

args = parser.parse_args()  # 括号里面可以传入命令行的参数
args_ = parser.parse_args("-i=1".split("="))

三、 使用案例

我们可以创建一个模板:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo01.py"
__time__ = "2022/6/16 17:12"
__email__ = "liu.zhong.kun@foxmail.com"
from typing import Callable
from functools import wraps
import sys, argparse
def terminal(param: bool = False):  # 判断是否要使用命令行参数
    def get_params(fun: Callable):
        if param:
            parser = argparse.ArgumentParser(description="help document")
            "---------------------------------------------------------------"
			# 如果需要从命令行传入参数时,就在这里添加
            "---------------------------------------------------------------"
            args = parser.parse_args()
        else:
            args = None
        @wraps(fun)
        def inner():
            ret = fun(args)  # 可能在传参数是还要进行其他的初始化操作
            return ret
        return inner
    return get_params
@terminal()  # 使用装饰器
def main(args):
    print(args)
if __name__ == "__main__":
    main()
    sys.exit(0)

使用案例,创建一个程序,可以连接邮箱的SMTP服务

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo01.py"
__time__ = "2022/6/16 17:12"
__email__ = "liu.zhong.kun@foxmail.com"
from smtplib import SMTP
from typing import Callable
from functools import wraps
import sys, argparse
def terminal(param: bool = False):
    def get_params(fun: Callable):
        if param:
            parser = argparse.ArgumentParser(description="help document")
            "---------------------------------------------------------------"
            parser.add_argument('--version', "-v", action='version', version='%(prog)s 2.0')
            parser.add_argument("-u", "--username", type=str, help="Enter the SMTP server account", required=True)
            parser.add_argument("-p", "--password", type=str, help="Enter the SMTP server password", required=True)
            "---------------------------------------------------------------"
            args = parser.parse_args()
        else:
            args = None
        @wraps(fun)
        def inner():
            ret = fun(args)
            return ret
        return inner
    return get_params
@terminal(True)
def main(args):
    smtp = SMTP('smtp.qq.com')
    smtp.login(args.username, args.password)
    smtp.quit()
    smtp.close()
if __name__ == "__main__":
    main()
    sys.exit(0)

到此这篇关于python中argparse模块的文章就介绍到这了,更多相关python argparse模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python参数解析模块sys、getopt、argparse使用与对比分析

    一些命令行工具的使用能够大大简化代码脚本的维护成本,提升复用性,今天主要是借助于python提供的几种主流的参数解析工具来实现简单的功能,主要是学习实践为主,这是新年伊始开工的第一篇,还是花了一番功夫来完成写作的和实验的,希望能够帮到需要的朋友们,新的一年里,祝大家心想事成! 好了,废话不多说,下面进入正文. Python中有三个内建的模块用于处理命令行参数: 第一个:sys,最简单,只能够提供简单的参数解析功能 第二个:getopt,只能简单的处理命令行参数 ,较sys封装更好一点 第三个:a

  • 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[0]

  • Python argparse模块使用方法解析

    这篇文章主要介绍了Python argparse模块使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 说明 argparse 模块是python 用于解析命令行参数和选项的标准模块. 程序定义它需要的参数,然后 argparse 模块将弄清如何从 sys.argv 解析出那些参数. argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息. 2. 使用流程 使用argparse 模块配置命令行参

  • Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2.然后创建一个解析对象 3.然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项 4.最后调用parse_args()方法进行

  • python中argparse模块用法实例详解

    本文实例讲述了python中argparse模块用法.分享给大家供大家参考.具体分析如下: 平常在写命令行工具的时候,经常会带参数,所以用python中的argparse来实现. # -*- coding: utf-8 -*- import argparse args = "-f hello.txt -n 1 2 3 -x 100 -y b -z a -q hello @args.txt i_am_bar -h".split() # 使用@args.txt要求fromfile_pref

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

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

  • python中argparse模块基础及使用步骤

    目录 argparse模块用法 一. 概念 二. 基础 1. 使用步骤 1.1 总步骤 1.2 创建对象 1.3 添加参数 1.4 解析参数 三. 使用案例 argparse模块用法 一. 概念 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行. 官方文档的位置:[https://docs.python.org/zh-cn/3/library/argparse.html] 在这里我们利用git

  • python中argparse模块及action='store_true'详解

    目录 Python argparse模块详解 1. 问题描述 2. add_argument() 方法官方介绍 action 3. 实例测试与对比 step01 step 02 step03:store后面是否可以自定义? step04:为什么我的输出值为None? step05 理解store_true,store_false Python argparse模块详解 argparse 是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分.基于 python 2.7

  • Python中six模块基础用法

    背景 大家知道现在python主要有两个大的版本,一个是python2另一个是python3,那么不同的人可能会习惯不同的版本,而python2和python3又有一些区别和不兼容的地方,给程序猿造成了很大的烦恼,怎么办呢? 作用 Six 就是来解决这个烦恼的,这是一个专门用来兼容 Python 2 和 Python 3 的模块,它解决了诸如 urllib 的部分方法不兼容, str 和 bytes 类型不兼容等"知名"问题. 使用 import six six.PY2 #返回一个表示

  • python中jieba模块的深入了解

    目录 一.前言 二.模块的安装 三.jieba模块具体讲解 3.1分词模式 3.2cut().lcut() 3.2.1cut(sentence, cut_all=False, HMM=True, use_paddle=False) 3.2.2lcut(sentence,cut_all=False) 3.3cut_for_search().lcut_for_search() 3.4add_word(self, word, freq=None, tag=None) 3.5del_word(word)

  • 基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查是否安装了pip 打开一个终端窗口,并执行如下命令: Python2.7中: zhuzhu@zhuzhu-K53SJ:~$ pip --version pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7) Python3.X中: z

  • Python中getpass模块无回显输入源码解析

    本文主要讨论了python中getpass模块的相关内容,具体如下. getpass模块 昨天跟学弟吹牛b安利Python标准库官方文档的时候偶然发现了这个模块.仔细一看内容挺少的,只有两个主要api,就花了点时间阅读了一下源码,感觉挺实用的,在这安利给大家. getpass.getpass(prompt='Password: ', stream=None) 调用该函数可以在命令行窗口里面无回显输入密码.参数prompt代表提示字符串,默认是'Password: '.在Unix系统中,strea

  • 浅谈Python中os模块及shutil模块的常规操作

    如下所示: #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. #只支持在 Unix, Windows 下使用 import os, sys # 打开文件 path=r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore' dirs = os.listdir( path ) print(dirs) # 输出所有文件和文件夹 for fil

  • python中wx模块的具体使用方法

    wx包中的方法都是以大写字母开头的,而这和Python的习惯是相反的. 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口.这里介绍wxPython : 下载地址:http://www.wxpython.org/download.php 根据自己的操作系统下载相应版本. 安装: 安装过程非常简单,以win7系统为例,点击下载的exe 文件,保持安装目录与本机的python目录一致就OK了. 创建并显示一个框架 import wx # 需要导入wx模块 ap

随机推荐