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

  

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

  

  1. import argparse
  2.  
  3. def _argparse():
  4. parseobj = argparse.ArgumentParser(description="This is script help")
  5. # 参数说明:
  6. # name/flag:参数的名字
  7. # action:遇到参数的动作,默认值是store
  8. # nargs:参数的个数,可以是具体的数字,或者是+或者是*,*表示0个或者多个参数,+号表示1个或者多个参数
  9. # default:不指定参数时的默认值
  10. # type:# 参数的类型
  11. # choice:参数允许的值
  12. # required:可选参数是否可以省略
  13. # help:参数的帮助信息
  14. # dest:解析后参数的名称
  15.  
  16. parseobj.add_argument("--host",action='store',dest='host',required=True,default="127",help="This is a host ip address",type=int)
  17. parseobj.add_argument("--P",'--passwd',action='store', dest='pwd', required=True, default="admin123.",help="This is a host password", type=str)
  18. parseobj.add_argument("--V", '--version', action='version', version="%(prog)s 0.1")
  19.  
  20. return parseobj.parse_args()
  21.  
  22.  
  23. if __name__ == '__main__':
  24. res = _argparse()
  25. print(res.pwd)
  26. print(res.host)

  

  

 

 

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

 

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

 

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

 

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

  

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

  

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

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

c、先看一个官方的例子

  1. import click
  2.  
  3. # click模块的作者就是Flask的作者,(Armin Ronacher)开发的一个第三方的模块,用于快速创建命令行。他的作用用python标准库中的argparse相同,但是
  4. # 使用更加简单,click相对于标准库的argparse,就好比requests库相当于标准库的urllib库,click是一个第三的库,因此在使用之前需要安装
  5.  
  6. @click.command()
  7. @click.option('--count',default=1,help='Number of greetings')
  8. @click.option('--name',prompt='your name',help='The person to greet')
  9. def hello(count,name):
  10. for x in range(count):
  11. click.echo("hello {name}".format(name = name))
  12.  
  13. if __name__ == '__main__':
  14. hello()

  

 

 

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

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

 

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

  

a、测试一下nargs参数

  1. @click.command()
  2. @click.option('--post',nargs=2,help='Number of post')
  3. def hello(post):
  4. print(post)
  5.  
  6.  
  7. if __name__ == '__main__':
  8. hello()

  

测试结果

 

 b、测试click.choice选项

  1. @click.command()
  2. @click.option('--hash',type=click.Choice(["md5","sha1"]),help='type of hash')
  3. def hello(hash):
  4. print(hash)
  5.  
  6.  
  7. if __name__ == '__main__':
  8. hello()

  

测试结果

 

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

  1. @click.command()
  2. @click.option('--pwd',prompt=True,hide_input=True,help='passwd of user',confirmation_prompt=True)
  3. def hello(pwd):
  4. print(pwd)
  5.  
  6.  
  7. if __name__ == '__main__':
  8. hello()

  

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

  

测试结果如下

错误的输入

正确的输入

 

版权声明:本文为bainianminguo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bainianminguo/p/10629785.html