Python之OptionParser模块使用详解
作者:热气球、 发布时间:2021-03-08 14:07:48
标签:Python,OptionParser,模块
介绍
OptionParser是一个更方便、更灵活、更强大的用于解析命令行选项的库,使用更具声明性的命令行分析样式:创建 OptionParser ,用选项填充它,并解析命令行。 optparse 允许用户以常规GNU/POSIX语法指定选项,并另外为您生成用法和帮助消息
基本用法
①from optparse import OptionParser #导入模块
②parser = OptionParser(...) #创建实例
③parser.add_option(...) #添加命令行参数
④(options, args) = parser.parse_args() #得到解析后的options对象,查看用户的输入
参数选项
OptionParser()
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
#usage 打印用法
例如: Usage: test.py [options] arg
#version --version时输出版本信息
例如:test.py 1.0
#description 描述信息 --help时输出
例如:hello OptionParser!
parser.add_option()
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
#action 指明optparser解析参数时该如何处理。默认是store
- store 表示命令行参数的值保存在options对象中。
- store_false 中存在 -v verbose 将会返回false,也就是说verbose的值与-v后的具体参数具体项无关,只与-v是否存在有关
- store_true 与action="store_false"类似,只有其中有参数-v存在时,则verbose的值为true,如果-v不存在,那么verbose的值为None
#type 默认是string,也可以是 int、float等
#dest 指定接收用户输入的值,当action="store"时可以将dest接收的值进打印或比较等其他处理
例如:
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
print(options.filename)
if __name__ == "__main__":
main()
#===test.py -f 1输出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f 1
1
#default 设置默认值;如果在命令行上未看到该选项,则default的值为用于该选项的默认值。
#help --help时 输出该选项的解释说明
例如:
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
#===test.py -h输出===#
-v, --verbose 这是帮助文档
生成帮助
#!/usr/bin/env python3.8.8
# -*- encoding: utf-8 -*-
'''
@File : test.py
@Time : 2022/02/08 11:48:40
@Author : 热气球
@Version : 1.0
@Contact : 17695691664@163.com
'''
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store_true",dest="verbose",help="这是帮助文档")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print("reading %s..." % options.filename)
if __name__ == "__main__":
main()
#===test.py -h输出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py --help
Usage: test.py [options] arg
hello OptionParser!
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
read data from FILENAME
-v, --verbose 这是帮助文档
-q, --quiet
PS C:\Users\Administrator>
错误提示
此示例拿于官网手册
#!/usr/bin/env python3.8.8
# -*- encoding: utf-8 -*-
'''
@File : test.py
@Time : 2022/02/08 11:48:40
@Author : 热气球
@Version : 1.0
@Contact : 17695691664@163.com
'''
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store_true", dest="verbose")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print("reading %s..." % options.filename)
if __name__ == "__main__":
main()
#---示例代码解释---#
-v参数 当指定-v时才可以运行此代码,因为-v存在时if options.verbose: 为True
-q参数 当指定-q时表明退出执行,因为action="store_false",所以-q不存在,if options.verbose: 为True
-f参数 指定filename,需要配合-v参数一起使用; -v参数的具体选项值随意设置,存在即可。
#===test.py -v True -f 1输出===#
reading 1...
#===test.py -f 1输出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f 1
Usage: cov-run-desktop-test.py [options] arg
cov-run-desktop-test.py: error: incorrect number of arguments
提示参数不够
#===test.py -f 输出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -f
Usage: cov-run-desktop-test.py [options] arg
cov-run-desktop-test.py: error: -f option requires 1 argument
错误:-f选项需要1个参数
代码示例
#!/usr/bin/env python3.8.8
# -*- encoding: utf-8 -*-
'''
@File : test.py
@Time : 2022/02/08 11:48:40
@Author : 热气球
@Version : 1.0
@Contact : 17695691664@163.com
'''
from optparse import OptionParser
def main():
parser = OptionParser(usage="usage: %prog [options] arg",version="%prog 1.0",description="hello OptionParser!")
parser.add_option("-f", "--file", dest="filename",help="read data from FILENAME")
parser.add_option("-v", "--verbose",action="store", default='reqiqiu',dest="verbosename",help="这是帮助文档")
parser.add_option("-q", "--quiet",action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
if options.verbose:
print("reading %s..." % options.filename)
if __name__ == "__main__":
main()
#===test.py -h输出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py -h
Usage: test.py [options] arg
hello OptionParser!
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
read data from FILENAME
-v VERBOSENAME, --verbose=VERBOSENAME
这是帮助文档
-q, --quiet
#===test.py -v输出===#
PS C:\Users\Administrator> & E:/python3.8.8/python.exe c:/Users/Administrator/Desktop/test.py --version
test.py 1.0
来源:https://blog.csdn.net/weixin_42506599/article/details/122830917


猜你喜欢
- BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库
- 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个
- 如何比较两个go对象完全相同在go语言中,要比较两个对象是否完全相同,我们可以使用以下三种方法:方法一:使用reflect.DeepEqua
- 1,前台引入所需的js 可以从官网上下载function getTab(){var url = contextPath+'/fund
- 环境系统:Centos7.2 服务:Nginx1:下载PHP7.0.2的安装包解压,编译,安装: $ cd /usr/s
- 1.导入依赖包import ( "github.com/spf13/viper")2.编写ya
- 一、打开、关闭文件 语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号
- 本文实例讲述了vue.js使用v-model实现表单元素(input) 双向数据绑定功能。分享给大家供大家参考,具体如下:v-model 一
- 本文实例讲述了python实现的多线程端口扫描功能。分享给大家供大家参考,具体如下:下面的程序给出了对给定的ip主机进行多线程扫描的Pyth
- 我就废话不多说了,大家还是直接看代码吧~import tensorflow as tfn1 = tf.constant(2)n2 = tf.
- <%Class Cls_TemplateDim RegDim PageDim CIDDim SIDDim RuleDim Conten
- pandas.read_sql 可以在数据库中执行指定的SQL语句查询或对指定的整张表进行查询,以DataFrame 的类型返回查询结果,这
- 最近去公司,连续几天被保安查健康码,觉得他们效率有点慢,排了长队,回到家就来兴致,写了个简易的健康码识别系统(主要是针对上海的健康码 随申码
- 在我们的算法中,有一种叫做线性查找。分为:顺序查找。 折
- 本文主要介绍如何通过python生成ppt文件,以及借助ppt模板来生成ppt环境python 3python-pptx安装pip3 ins
- 本文译文,采用意译。下面这些方法对于我来说很有作用,自从我发现了这些操作。1. 数组求和假设你有下面的数字数组:let numbers =
- 一 背景 有赞的每个OLTP数据库实例上会设置一个sql-killer进程用于kill
- 一、使用+号添加列表元素一般情况下两个列表合并起来也是一种添加元素的方法,只要使用+号直接进行运算就可以了,下面是演示代码。name1 =
- [Python标准库]decimal——定点数和浮点数的数学运算 &n
- # coding:utf-8 import os import sys def cut_and_paste_file(source, des