一、关于解析命令行参数的方法
关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块。关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考:https://www.cnblogs.com/aland-1415/p/6613449.html
这里为大家介绍一个比sys.argv更强大的optparse模块。
这里说一句题外话,点开optparse的源码,第一行注释是这样的:A powerful, extensible, and easy-to-use option parser。是否感受到了作者强有力的......
说回正题。当我们要利用server与client进行FTP文件传输的时候,在client端往往需要输入诸如 -s 10.10.10.1 -p 9001 这样的信息,当然我们不能控制用户的输入,如果用户随意的输入错误的命令,比如不写IP地址,只是写-s -p 9001,或者只写 -s -p。我们如果还用sys.argv获取参数的话需要做很多麻烦的逻辑判断,这给我们开发程序带来了很大的不便。
但是如果我们利用optparse会十分便捷的解决这样的问题。
二、optparse介绍
2.1 optparse的用法如下:
import optparseparser = optparse.OptionParser() parser.add_option("-s", "--server", dest="server", help="ftp server ip_address") parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port") parser.add_option("-u", "--username", dest="username", help="username info") parser.add_option("-p", "--password", dest="password", help="password info")
首先import optparse类,然后创建optparse对象parser,再使用add_option()来定义命令行参数,最后使用parse_args()来解析命令行。
2.2 举例说明:
我们先新建一个test.py文件,代码如下
import optparse class Wang_opt: def __init__(self): #初始化 parser = optparse.OptionParser() parser.add_option("-s", "--server", dest="server", help="ftp server ip_address") parser.add_option("-P", "--port", type="int", dest="port", help="ftp server port") parser.add_option("-u", "--username", dest="username", help="username info") parser.add_option("-p", "--password", dest="password", help="password info") #解析参数 self.options, self.args = parser.parse_args() print(self.options,self.args) if __name__ == ‘__main__‘: whw_opt = Wang_opt()
然后在test.py文件的目录下运行python test.py,后面不跟任何参数,看看效果:
运行的结果一个是字典,里面存放的是我们需要的信息,后面有一个“空列表”,我们再试试加上符合条件的参数以及不符合条件的参数:
这就说明,字典中存放的是我们需要的信息,如果用户没有输入默认设置为None;而列表中存放的是“错误”信息。再返回头看看源代码,其实这个字典就是上面的self.options变量,列表就是self.args。optparse模块解析的结果就是“我们想得到的信息”以及“用户误操作的输入信息”——的确很强大!
当然,如果用户不知道他需要输入什么命令,我们可以在后面输入 -h,寻求帮助:
其实大家可以对照着源代码,这些信息的关键字都是我们在add_option()方法中设置的——嗯,确实~A powerful, extensible, and easy-to-use option parser
原文地址:https://www.cnblogs.com/paulwhw/p/9065074.html