模块以及与sys.argv的对比"/>
python optparse模块以及与sys.argv的对比
对于optparse模块的操作是一个类似于sys.argv的,都是通过外界的输入来获取值,不过sys.argv获取到值后生成的是一个列表,并且第一个位置上是自己的文件名,如下:
# 通过sys.argv 获取的值
data_list = sys.argv
print(data_list)# 第一次
# 运行
python test.py 1 2 3 4
# 输出
['test.py', '1', '2', '3', '4']# 第二次
# 运行
python test.py -u root -p root123
# 输出
['test.py', '-u', 'root', '-p', 'root123']# 对于获取到的值可以通过列表的方法来进行操作
而optparse模块虽然使用起来相对来说有点复杂,但对于获取到的值的操作更加方便。
# 首先创建一个对象
opt = optparse.OptionParser()
# 添加要用到的命令
opt.add_option('-u', '--user', dest='username')
opt.add_option('-p', '--pwd', dest='password')# 注意
# 下面这种是错误的,因为-h在optparse模块中已经被定义了,用于查看帮助,可以直接使用,不能重新进行添加
# pt.add_option('-h', '--host', dest='host')# 获取值
options, args = opt.parse_args()# 打印
print(options)
print(args)# 第一次
# 运行
python test.py 1 2 3 4
# 输出
{'username': None, 'password': None}
['1', '2', '3', '4']# 第二次
# 运行
python test.py -u root -p root123
# 输出
{'usename': 'root', 'password': 'root123'}
[]# 第三次
# 运行
python test.py -u root -p root123 1 2 3 4
输出
{'usename': 'root', 'password': 'root123'}
['1', '2', '3', '4']
options:返回的不是一个字典,而是一个类 <class ‘optparse.Values’>,而我们要取的值是他的属性。
获取options中的值:options.username
args:返回的是一个列表,用于存储前面没有被添加的命令。
总结: 相比之下,用optparse模块用来获取外界输入的值更加灵活,更加便于我们的使用,而不是通过sys.argv来获取,这样必须记住每个值在列表中的位置,否则很难获取。
更多推荐
python optparse模块以及与sys.argv的对比
发布评论