python_argparse&&click库(从命令行接收用户参数)

argparse库

01.库安装

argparse库是python自带的命令行参数解析包,不仅可以从用户命令行中获取参数,还可以自动化的输出帮助内容,使用import argparse来判断是否已经安装了这个库,如果没有,其安装的方式也非常的简单,使用pip install argparse就可以直接安装。

02.创建参数解析对象

在使用前,首先需要创建一个参数的解析器,在显示help时就会显示出他的描述,当然,括号中的参数可有可无。

parse = argparse.ArgumentParser(description='description')

这样就生成了一个名为parse的解析对象。

03.添加参数列表

为这个对象添加一些参数,使用add_argument方法,其原型为:

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

04.选项name\flag\action\default\type\help

第一个参数为接收用户数输入的标志,例如--path-y等,其后紧跟的选项为可选项,具体为:

parse.add_argument('-y',action = 'store_false/store_ture',default = False,help = 'this is help')

这句话中的参数-y存在时,表示了action中的false或true,当不存在时,则为默认值False,这类参数类似于一个判断,yes or no,还有一类参数可以设置获取到参数的类型,int、str等,这类型的参数会将用户输入保存下来,用于最后的操作,例如;

parse.add_argument('-path',type=str,default ='c:',help = 'cd to this path')

上面设置的两个参数都需要使用parse.parse_args()解析,解析后将其赋值给一个变量,这个变量将会保存用户输入的所有参数内容,具体用法为:

args = parse.parse_args()
print args

执行时可以看到我们的输入都被储存了下来。

运行结果
 

使用-h获取帮助列表。

 
帮助列表

通过args.path、args.y可以分别对这两个值操作,完成我们需要的目标。

05.选项nargs\const\choices\required\metavar\dest

平常我们需要用到的就是上面那几个参数,以下内容只做了解。

  • nargs表示这个参数接收几个对象,例如一个参数需要多个输入,则要指定nargs,其中通配符?表示1个或0个参数,*表示0个或多个,+表示一个或多个。
nargs = '+'
nargs = '?'
nargs = '*'
  • choices表示这个参数的选项,只能从其中挑选,例如参数为性别,则只能从man、woman中选择。
add_argument('-sex',type=str,default = 'man',choices = ['man','woman'],help = 'choice your sex')
  • const与nargs为?必须同时出现,且当选择了选项没有参数时会默认选择const中的内容,而没有选项时才会取default中的内容。当没有nargs时会出现ValueError: nargs must be '?' to supply const的错误。
  • required表示这个参数必须存在,如果设置为required但没有包含这个参数的内容时会提示:error: argument -sex is required
  • metavar将写入的内容扩充到参数的帮助信息中,在显示help时也会显示。
  • dest表示将获取到的参数存放进哪个变量中,例如dest='Ysex',表示可以使用args.Ysex访问这个参数,如果不指定,则会默认使用名字来代替。
add_argument('-sex',type=str,default = 'man',choices = ['man','woman'],help = 'choice your sex',dest='Ysex')
#如不指定dest将使用-sex中的sex默认存放,args.sex访问。

click库

01.click库安装

click是第三方开发的参数获取库,可以快捷的把一个函数修饰为命令行,相较于python自带的argparse来说,功能更加强大,也更随心所欲点,可以使用pip install click安装。

02.click基本使用

click的命令行分为选项和参数两个部分,选项为option,参数为argument,其中option功能较多,封装了许多特殊的功能,其表示可选项,这个参数可有可无;而argument表示了必须存在的参数,按照顺序依次存入相应的变量中,直接使用xxx访问。

03.修饰一个函数为命令行

在代码中使用@click.command()将下方的函数改变为命令行,这样的方式显然更加简单。

import click
@click.command()
@click.option('-name',type = str , default = 'wwwaxlz' , help = 'input your name' , prompt  = 'your name:')
def myfunc(name):
      click.echo(name)
myfunc()

上面的代码中是option的简单用法,包括了type、default、help和prompt,其中default和help与argparse相同。不再介绍,而type方面扩展了许多的新类型,丰富了第三方库,prompt则是当这个选项没有输入时做出的提示,下面先看type的内容:
除了int / string / float 等共同的类型外,click含有许多新的类型,例如:

  • click.Choice(['yes','no'])表示只可以在俩个内容中选择,注意'C'大写,否则会出现has no attribute 'choice'的错误
  • click.option('-password',hide_input=True, confirmation_prompt=True,prompt = 'input your pwd' , help = 'password')hide_input表示输入时将会隐藏输入的内容,而confirmation表示输入之后是否需要确认,类似于其他场景中的密码输入。对于密码click有专门的选项,@click.password_option()可以直接完成上面的内容。
  • 作为第三方的库,当然在某些方面是很方便的,例如:
import click
@click.command()
@click.option('-filen',type = click.File('rb'),prompt = 'input your filename',help = 'open file')
def myfunc(filen):
      print filen.read()
myfunc()
  • 这时将使用rb方法打开一个文件,如果一开始用户没有指定这个参数,将会提醒用户输入。

    运行结果

  • 如果只需要这个文件名称或路径名称时,可以使用:

import click
@click.command()
@click.option('-filen',type = click.Path(exists=True),prompt = 'input your filename',help = 'open file')
def myfunc(filen):
      clcik.echo(filen)
myfunc()
  • 添加exists=True可以直接判断路径是否存在。
    运行结果

04.click.argument添加固定参数

使用argument添加参数时,参数必须存在,且没有prompt、help等选项,当没有选中这个参数时,会直接爆出错误:Error: Missing argument "_FILEN".
既然不是选项类的参数,那么他的取值完全依靠申明的顺序,第一个申明谁,第一个参数就是谁。
例如:

@click.command()
@click.argument('filen',type = click.Path(exists=True))
@click.argument('myn',type = str , default = 'sks')
def myfunc(filen,myn):
      print filen,myn

而提供的参数名称必须与函数形参取名相同,这样才能正确的获取用户的命令行输入。

 
执行结果
 

显然这种方式没有选项类可完成的动作多,但是简单的脚本中完全可以使用,极简式。

总结

argparse与click完成相同的功能,但一个是python自带的库,一个是大神编写的第三方库,argparse可以为整个脚本编写参数,不需要多次申明,而click为某个函数提供参数,用户的输入都被函数获取,每个函数都需要首先注册command,在特殊的方面封装的也比较完整,值得学习!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星辰照耀你我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值