标签:require target 说明 保存 ntp rip des pass 格式
在Python中,argparse模块是标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块。argparse模块能够根据程序中的定义从sys.argv中解析出来这些参数,并自动生成帮助和使用信息。
使用argparse解析命令行参数时,首先需要创建一个解析器:
import argparse parser = argparse.ArgumentParser()
ArgumentParser类的初始化函数有多个参数,其中比较常用的是description,它是程序的描述信息,即帮助信息前面的文字。
为应用程序添加参数选项需要使用ArgrmentParser对象的add_argument方法,该方法的格式如下:
add_argument(name or flag...[, action ] [, nargs ] [, const ] [, default ] [, type ] [, choices ] [, required ] [,help ] [,metavar ] [, dest ]
各个参数含义如下:
action内置的6种动作:
store # 保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。 store_const # 保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。 store_ture/store_false # 保存相应的布尔值。这两个动作被用于实现布尔开关。 append #将值保存到一个列表中。若参数重复出现,则保存多个值。 append_const #将一个定义在参数规格中的值保存到一个列表中。 version #打印关于程序的版本信息,然后退出
解析命令行参数需要用到AgrumentParser对象的parse_args方法,该方法返回一个NameSpace对象。获取对象后,参数值可以通过属性的方式进行访问。由于指定了默认值,那么直接运行,也不会报错
parser.add_argument(‘-host‘,action=‘store‘,dest=‘server‘,default=‘localhost‘,help=‘connect to host‘) parser.add_argument(‘-p‘,action=‘store‘,dest=‘port‘,default=‘3306‘,help=‘the port to host‘) parser.parse_args() # parser.parse_args() 存储的值 Namespace(port=‘3306‘, server=‘localhost‘)
存贮布尔类型的值的时候action,存储为store_true类型。
使用argparse进行参数解析还有另一个好处,它能够根据我们的选项定义自动生成帮助信息。(自动追加-h选项,打印帮助信息)
import argparse parser = argparse.ArgumentParser(description=‘A Python-MySQL client‘) def getparser(): parser.add_argument(‘--host‘,action=‘store‘,dest=‘host‘,required=True,help=‘connect to host‘) parser.add_argument(‘-u‘,‘--username‘,action=‘store‘,dest=‘user‘,required=True,help=‘user for login‘) parser.add_argument(‘-p‘,‘--password‘,action=‘store‘,dest=‘password‘,required=True,help=‘password to use when user connecting to server‘) parser.add_argument(‘-P‘,‘--port‘,action=‘store‘,dest=‘port‘,default=3306,type=int,help=‘port number to use for connection or 3306 or default‘) parser.add_argument(‘-v‘,‘--version‘,action=‘version‘,version=‘%(prog)s 0.1‘) return parser.parse_args() def main(): parser = getparser() conn_args = dict(host=parser.host,username=parser.user,password=parser.password,port=parser.port) print(conn_args) if __name__ == ‘__main__‘: main()
PS:如果 port参数可以指定多个参数,那么可以添加 nargs=‘+‘即可。
标签:require target 说明 保存 ntp rip des pass 格式
原文地址:http://www.cnblogs.com/zhichaoma/p/8001451.html