python的argpare和click模块详解

一、argparse模块

1、模块说明

# argparse是python的标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块,argparse能够根据程序中的定义的sys.argv中解析出这些参数,
# 并自动生成帮助和使用信息

  

2、模块常用的参数

    # 参数说明:
    # name/flag:参数的名字
    # action:遇到参数的动作,默认值是store
    # nargs:参数的个数,可以是具体的数字,或者是+或者是*,*表示0个或者多个参数,+号表示1个或者多个参数
    # default:不指定参数时的默认值
    # type:# 参数的类型
    # choice:参数允许的值
    # required:可选参数是否可以省略
    # help:参数的帮助信息
    # dest:解析后参数的名称

  

3、使用方法

import argparse

def _argparse():
    parseobj = argparse.ArgumentParser(description="This is script help")
    # 参数说明:
    # name/flag:参数的名字
    # action:遇到参数的动作,默认值是store
    # nargs:参数的个数,可以是具体的数字,或者是+或者是*,*表示0个或者多个参数,+号表示1个或者多个参数
    # default:不指定参数时的默认值
    # type:# 参数的类型
    # choice:参数允许的值
    # required:可选参数是否可以省略
    # help:参数的帮助信息
    # dest:解析后参数的名称

    parseobj.add_argument("--host",action=‘store‘,dest=‘host‘,required=True,default="127",help="This is a host ip address",type=int)
    parseobj.add_argument("--P",‘--passwd‘,action=‘store‘, dest=‘pwd‘, required=True, default="admin123.",help="This is a host password", type=str)
    parseobj.add_argument("--V", ‘--version‘, action=‘version‘, version="%(prog)s 0.1")

    return parseobj.parse_args()

if __name__ == ‘__main__‘:
    res = _argparse()
    print(res.pwd)
    print(res.host)

  

  

4、最后我们测试一下这个模块

a、测试 -h选项,这里-h和--help的效果是一样的

b、测试--V选项和--version选项

c、测试一下输入的正确的参数

二、click模块

1、模块介绍

click模块的作者就是Flask的作者,(Armin Ronacher)开发的一个第三方的模块,用于快速创建命令行。他的作用用python标准库中的argparse相同,但是
使用更加简单,click相对于标准库的argparse,就好比requests库相当于标准库的urllib库,click是一个第三的库,因此在使用之前需要安装

  

2、模块安装

E:\python3\Scripts>pip3.6.exe install click

  

3、使用步骤

a、使用@click.command()装饰一个函数,使之成为命令行的接口

b、使用@click.option()等装饰函数,为其添加命令行选项等

c、先看一个官方的例子

import click

# click模块的作者就是Flask的作者,(Armin Ronacher)开发的一个第三方的模块,用于快速创建命令行。他的作用用python标准库中的argparse相同,但是
# 使用更加简单,click相对于标准库的argparse,就好比requests库相当于标准库的urllib库,click是一个第三的库,因此在使用之前需要安装

@click.command()
@click.option(‘--count‘,default=1,help=‘Number of greetings‘)
@click.option(‘--name‘,prompt=‘your name‘,help=‘The person to greet‘)
def hello(count,name):
    for x in range(count):
        click.echo("hello {name}".format(name = name))

if __name__ == ‘__main__‘:
    hello()

  

其他的应该大家都可以看懂,这个prompt的作用是什么呢,实际就是如果我们没有为name传参数,他就会给出一个提示

下面这个例子是完整的传参

4、常用参数

常用参数
default:设置命令行参数的默认值
help:参数说明
type:参数的类型,可以是string,int,float
prompt:当在命令行中没有输入相应的参数,会根据prompt提示用户输入
nargs:指定命令行参数接受的值的个数

  

a、测试一下nargs参数

@click.command()
@click.option(‘--post‘,nargs=2,help=‘Number of post‘)
def hello(post):
    print(post)

if __name__ == ‘__main__‘:
    hello()

  

测试结果

b、测试click.choice选项

@click.command()
@click.option(‘--hash‘,type=click.Choice(["md5","sha1"]),help=‘type of hash‘)
def hello(hash):
    print(hash)

if __name__ == ‘__main__‘:
    hello()

  

测试结果

c、如果使用命令行输入密码,则默认的情况是有很大的安全隐患的,因为输入密码的命令在history中,其他用户就可以通过命令的历史列表,拿到我们的密码,click可以为我们解决这个问题

@click.command()
@click.option(‘--pwd‘,prompt=True,hide_input=True,help=‘passwd of user‘,confirmation_prompt=True)
def hello(pwd):
    print(pwd)

if __name__ == ‘__main__‘:
    hello()

  

prompt:要设置为True
hide_input:要设置为True
confirmation_prompt:会自动为我们进行密码的二次验证

  

测试结果如下

错误的输入

正确的输入

原文地址:https://www.cnblogs.com/bainianminguo/p/10629785.html

时间: 2024-10-10 00:58:01

python的argpare和click模块详解的相关文章

python之sys与os模块详解

sys模块: sys.argv        命令行参数List,第一个元素是程序本身路径 sys.exit(n)      退出程序,正常退出时exit(0) sys.version      获取Python解释程序的版本信息 sys.maxint       最大的Int值 sys.path        返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform     返回操作系统平台名称 sys.stdin      输入相关 sys.stdout  

python与正则表达式:re模块详解

re模块是python中处理正在表达式的一个模块 正则表达式知识储备:http://www.cnblogs.com/huamingao/p/6031411.html 1. match(pattern, string, flags=0) 从字符串的开头进行匹配, 匹配成功就返回一个匹配对象,匹配失败就返回None flags的几种值X 忽略空格和注释 I 忽略大小写的区别   case-insensitive matching S  . 匹配任意字符,包括新行 def match(pattern,

Python基础系列讲解——时间模块详解大全之time模块

Python中提供处理时间日期相关的内置模块有time.datetime和calendar. time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以time模块的有些函数与平台相关,在不同的平台上可能会有不同的效果,这点需要特别注意下,即time模块的功能并不适用于所有平台. 使用时需要导入time模块,如下所示: import time time模块的时间表现的格式主要有以下三种: timestamp时间戳.时间戳表示的是从新纪元开始按秒计算的偏移

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

python中threading模块详解(一)

python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thread模块更高层的API来提供线程的并发性.这些线程并发运行并共享内存. 下面来看threading模块的具体用法: 一.Thread的使用 目标函数可以实例化一个Thread对象,每个Thread对象代表着一个线程,可以通过start()方法,开始运行. 这里对使用多线程并发,和不适用多线程并发做

python的logging模块详解

日志级别 >>>import logging >>>logging.NOTSET 0 >>>logging.DEBUG 10 >>>logging.INFO 20 >>>logging.WARN 30 >>>logging.ERROR 40 >>>logging.CRITICAL 50 >>>logging._levelNames {0:'NOTSET', 10:

(转)python time模块和datetime模块详解

python time模块和datetime模块详解 原文:http://www.cnblogs.com/tkqasn/p/6001134.html 一.time模块 time模块中时间表现的格式主要有三种: a.timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 b.struct_time时间元组,共有九个元素组. c.format time 格式化时间,已格式化的结构使时间更具可读性.包括自定义格式和固定格式. 1.时间格式转换图: 2.主要ti

Python中time模块详解(转)

Python中time模块详解(转) 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Ti

【转】Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 1 pip3 install pymysql 二.使用操作 1.执行SQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25