加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

利用Click和argparse给你Python程序构建一个优雅的命令行界面

发布时间:2019-08-21 06:17:08 所属栏目:优化 来源:虫虫安全
导读:我们知道在Linux下有优雅的shell终端命令行界面,shell脚本都可以优雅用命令行的方式来运行。而且shell也再带优化命令行参数解析的bash内部命令getopts和大多数发行版附带的外部命令getops。Perl语言也有Getopt::XX系列模块来实现类似功能;Golang也有fla

ArgumentParser对象的初始化原型为(构造方法):

  1. 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])

usage - 描述程序使用帮助信息(默认值:从添加的参数来生成)

description - 在参数帮助之前显示的文本(默认值:无)

epilog - 在参数帮助后显示的文本(默认值:无)

parents - ArgumentParser也应包含其参数的对象列表

formatter_class - 用于自定义帮助输出的类

prefix_chars - 前缀可选参数的字符集(默认值:' - ')

fromfile_prefix_chars -文件前缀字符参数(默认值:None)

argument_default -为参数的全局默认值(默认值:None)

conflict_handler - 解决冲突选项的策略(通常不需要)

add_help -添加-h/--help选项解析器(默认值:True)

一般情况下,我们无需管其他情况,只需设置个程序描述即可。

add_argument()方法

add_argument()方法用来创建解析参数,定义对参数具体的解析,其原型如下:

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

参数有:

name或者flags - 名称或选项字符串列表,必填写项。例如foo或-f, --foo。

action - 在命令行中遇到此参数时要采取的操作类型。

nargs – 要使用的命令行参数的数量,用通配符号表示,比如"*","+"和"?",分别表示不限数量,至少一个和一个参数。

const - 一些动作和 nargs 选择所需的常量。

default - 如果参数在命令行中不存在,则默认使用的值。

type - 命令行参数应该转换的类型,默认为字符串string

choices – 可选项, 一个允许参数值的容器。

required - 是否可以省略命令行选项(仅对可选项)。

help - 帮助提示信息,用来对参数进行必要的描述。

metavar – 帮助消息替代参数的显示名称。

dest - 要添加到parse_args()函数返回对象的属性的名称。

利用Click和argparse给你Python程序构建一个优雅的命令行界面

parse_args()方法

parse_args方法用来把命令行中的字符,解析到参数解析命名空间(add_argumnet()创建)定义的各个参数。其原型如下:

  1. parse_args(args=None, namespace=None) 

args为参数列表,参数字符串通过调用sys.argv获取,Namespace为属性创建一个新的空对象。

实例学习sqlmap

最后我们节选一个著名sql注入渗透工具sqlmap的cmdline.py部分代码,来展示一个大型软件中,如何实际通过argparser来构建起命令行界面的。基本上也跟上面流程方法一样,不过额外使用一些函数和功能。

利用Click和argparse给你Python程序构建一个优雅的命令行界面

全部代码详见sqlmap github官方仓库:

(github /sqlmapproject/sqlmap/blob/master/lib/parse/cmdline.py)

总结

本文我们实例介绍了python下构建优雅终端命令行界面两种方法Click和argparser。善用他们可以为我们的代码工作减少很多繁琐的命令行参数的定义和解析过程,提高编码的效率。

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读