Python中的getopt,optparse模块都可以进行命令行程序的开发,不过它们已经被废弃,在2.7和3.2版本中引入了argparse模块;这里介绍使用argparser模块,只需要数十行代码,就可以做出漂亮的命令行程序。
1.基本的命令行
看看官方文档里的一个示例:
这几行代码实现的功能为:如果命令行输入不带--sum选项,则对输入的多个整数执行max操作;否则,执行sum操作。例如:在命令行中执行:python prog.py 1 2 3 4输出为:4
在命令行中执行:python prog.py 1 2 3 4 --sum输出为:10
上面的代码中,主要的过程分为三个步骤:
-
调用argparse.ArgumentParser的构造器创建一个ArgumentParser对象。
-
调用ArgumentParser的add_argument()方法添加命令行的参数,包括可选参数和必选参数。其中以--、 -开头的表示可选参数,其它的表示必须输入的参数。
-
调用parser.parse_args()方法对传入的sys.argv参数进行解析。
2.实现子命令
有时候,我们可以根据功能将命令行分组成一系列相关的子命令。例如,Git命令行可以分为以下几组:
在Python中,利用argparse模块也可以很容易做出这样的子命令行程序。
例如,我们要做一个对用户信息进行管理的命令行程序,包括添加、删除、查询显示等几个功能。
我们可以根据功能将其分为三个子命令:add,delete,show。
相应的代码可以这样写:
对上面的代码进行概要的解释:ArgumentParser对象的add_subparsers()方法创建了一个特殊的action实例,对这个实例分别调用add_parser()方法来创建子命令对应的ArgumentParser,再调用这个ArgumentParser实例的add_argument()方法来添加子命令的参数。一个比较方便的地方在于,可以通过ArgumentParser的set_defaults()方法来设置子命令对应的处理函数。上面的示例中,分别为三个子命令设置了处理函数:add_fn,delete_fn,show_fn。
在命令行程序中执行:python cmd.py --help,将显示出以下信息:
从帮助信息中可以看到,命令行被组织为三个子命令,分别为add,delete,show。
在命令行中执行:python cmd.py add --help,可以查看add子命令的帮助信息:
对于add子命令,它有3个参数,分别为用户名、联系地址、电话号码;其中用户名为必选参数,其它两个为可选参数。
在命令行中执行:python cmd.py add --name 'Eric' --addr 'California,USA' --phone '0076938377'`
添加一个User的处理逻辑将由add_fn()来完成。程序中将得到一个信息为{name='Eric',addr='California,USA', phone='0076938377'}的User。
其它的delete和show子命令与此类似,不再赘述。
3.小结
使用Python的argparse模块,短短的几十行代码就可以搭建起来一个命令行程序的骨架。
argparse模块中最重要的是ArgumentParser对象,它包含了以下几个方法:
-
add_argument()
-
add_subparsers()
-
parse_args()
-
编程
+关注
关注
88文章
3614浏览量
93698 -
程序员
+关注
关注
4文章
951浏览量
29799 -
python
+关注
关注
56文章
4793浏览量
84634
原文标题:干货 | 使用Python轻松写出漂亮的命令行程序
文章出处:【微信号:ZTEdeveloper,微信公众号:中兴开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论