|
|
|
|
移动端

3.3.2 模仿MySQL客户端的命令行参数

《Python Linux系统管理与自动化运维》第3章打造命令行工具,本章介绍了如何使用Python语言解析ini格式的配置文件以及如何使用Python语言解析命令行参数,紧接着,本章介绍了Python标准库中的logging库,在本章最后,我们介绍了如何使用开源项目打造功能更加强大的命令行工具。本节为大家介绍模仿MySQL客户端的命令行参数。

作者:赖明星来源:机械工业出版社|2017-09-28 17:16

3.3.2 模仿MySQL客户端的命令行参数

下面是一个使用argparse模块、模仿MySQL客户端、解析命令行的例子。在这个例子中,我们添加了5个选项,分别是host、user、password、port和version。其中,host、user和password都是必传的参数,因为我们没有指定参数的类型,所以这几个参数的取值都以字符串的形式保存。对于user、password和port选项,为了提供易用性,可以使用“-u”、“-P”和“-p”的方式指定参数。port取值是一个端口号,因此,我们通过type选项告诉ArgumentParser,port参数的数据类型为整数。version选项用来打印程序的版本,因此,该选项的action取值为version。如下所示:

  1. from __future__ import print_function  
  2. import argparse  
  3.  
  4. def _argparse():  
  5.     parser = argparse.ArgumentParser(description='A Python-MySQL client')  
  6.     parser.add_argument('--host', action='store'dest='host',  
  7.             required=Truehelp='connect to host')  
  8.     parser.add_argument('-u', '--user', action='store'dest='user',  
  9.             required=Truehelp='user for login')  
  10.     parser.add_argument('-p', '--password', action='store',  
  11.             dest='password',required=Truehelp='password to use when connecting to server')  
  12.     parser.add_argument('-P', '--port', action='store'dest='port',  
  13.             default=3306type=inthelp='port number to use for connection or 3306 for default')  
  14.     parser.add_argument('-v', '--version', action='version'version='%(prog)s 0.1')  
  15.     return parser.parse_args()  
  16.  
  17. def main():  
  18.     parser = _argparse()  
  19.     conn_args = dict(host=parser.host, user=parser.user,  
  20.             password=parser.password, port=parser.port)  
  21.     print(conn_args)  
  22.  
  23. if __name__ == '__main__':  
  24.     main() 

在这个例子中,我们将上面的程序保存在一个名为mock_mysql_client.py的文件中。当我们要使用这个程序时,可以通过--help选项获取到帮助信息。如下所示:

  1. $ python argparse_test.py --help  
  2. usage: argparse_test.py [-h] --host HOST -u USER -p PASSWORD [-P PORT] [-v]  
  3.  
  4. A Python-MySQL client  
  5.  
  6. optional arguments:  
  7.     -h, --help            show this help message and exit  
  8.     --host HOST           connect to host  
  9.     -u USER, --user USER  user for login  
  10.     -p PASSWORD, --password PASSWORD  
  11.                           password to use when connecting to server  
  12.     -P PORT, --port PORT  port number to use for connection or 3306 for default  
  13.     -v, --version         show program's version number and exit 

在这一小节中,我们通过一个模仿MySQL客户端参数的例子演示了argparse模块的使用。可以看到,由于ArgumentParser的初始化函数和add_argument方法的参数较多,不可避免地导致argparse模块的使用变得较为复杂。在3.5节中,我们会介绍一个更加易用的命令行参数解析的开源库。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

主流ARM嵌入式系统设计技术与实例精解

本书重点介绍了主流ARM应用系统的开发与实践。全书基于目前较为通用、流行的ARM处理器,介绍了其原理、硬件结构、硬件电路设计与开发和软件...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊