Python的OptionParser模块教程

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: Python的OptionParser模块教程

Python中强大的选项处理模块。

示例

#!/usr/bin/pythonfrom optparse import OptionParser

parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
    help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
    action="store_false", dest="verbose", default=True,
    help="don't print status messages to stdout")

(options, args) = parser.parse_args()

print options.filename,options.verbose

将上面代码保存到文件option1.py(名字随便),添加执行权限并运行:

./option1.py
./option1.py -f
./option1.py -f foo.txt
./option1.py -f foo.txt -q
./option1.py -qffoo.txt # 注意这个和下面对比
./option1.py -fqfoo.txt
./option1.py --file foo.txt
./option1.py --quiet
./option1.py -h   # -h和--help默认情况optpars自动处理。
./option1.py --help

查看输出结果,稍稍思考就有所的了。

加载模块

要使用 OptionParser 模块,需要在Python程序中导入:

from optparse import OptionParser

生成 OptionParser 实例

首先需要生成一个实例,以后的操作都是操作这个实例,相当于分配了一段内存空 间。不然无处可以操作,类似C中的结构说明。不过Python是面向”对象“的语言。对 象的属性比结构多很多,可操作性更强,后面我们会介绍在生成 OptionParser 对象 的时候可以传递的一些参数。

usage = "usage: %prog [options] arg" # 定义字符串
parser = OptionParser(usage) # 传递一个字符串参数

OptionParser 不要求一定要传递参数,不过传递一些参数,可以方便程序使用。

OptionParser(usage="%prog [-f] [-g]",version="%prog 1.0")
    # %prog 在这里会自动替换为程序名字
    # usage 可以打印用法
    # version 在使用 %prog --version 的时候输出版本信息

使用add_option添加命令行参数

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")

最后调用parse_args()解析命令行参数

(options, args) = parser.parse_args()

可以传递一个参数列表给parse_args(),否则,默认使用命令行参数 (sys.argv[1:])。parse_args()返回两个值:

  • options , 这是一个对象(optpars.Values),保存有命令行参数值。只要知道 命令行参数名,如file,就可以访问其对应的值:options.file。
  • args , 一个由 positional arguments 组成的列表

parse_args()方法的参数

action

action是parse_args()方法的参数之一,指示optparser解析参数时候该如何处理。 action有一组固定的值可以选择,默认是'store',表是将命令行参数值保存到 options对象里。

#python学习交流群:711312441
parser.add_option("-f","--file",
                  action="store",type="string",dest="filename")
args=["-f","foo.txt"]
(options,args)=parser.parse_args(args)
print options.filename

上面程序会输出"foo.txt"

action的值有:store,store_true,store_false,store_const,append,count,callback.
type

type的默认值是"string",也可以是"int""float"等。

dest

如果没有指定dest参数,将用命令行的参数名来对options对象的值进行存取。

store的形式

store可以为 store_true 和 store_false 两种形式。用于处理命令行参数后面不 带值的情况。如 -v, -q 等命令行参数:

parser.add_option("-v",action="store_true",dest="verbose")
parser.add_option("-q",action="store_false",dest="verbose")

当解析到 -v ,options.verbose值为True,解析到 -q , 值为 False。注意,这里 顺序解析,所以如果有 -vq,最终的值还是False。
default — 设置默认值

parser.add_option("-f","--file",
    action="store",
    dest="filename",
    default="foo.txt")
parser.add_option("-v",
    action="store_true",
    dest="verbose",
    default=True)

help — 指定帮助文档

parser.add_option("-f", "--filename",
                  metavar="FILE",
                  help="write output to FILE"),

optparse解析到 -h 或者 —help 命令行参数时,调用 parser.print_help()输出 程序帮助信息。help字段很有用。
metavar — 提示用户期望参数

Group — 给参数分组

group = OptionGroup(parser, ``Dangerous Options",
                    ``Caution: use these options at your own risk."
                    ``It is believed that some of them bite.")
group.add_option(``-g", action="store_true", help="Group option.")
parser.add_option_group(group)
相关文章
|
6天前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
11天前
|
BI Python
SciPy 教程 之 Scipy 显著性检验 8
本教程介绍SciPy中显著性检验的应用,包括如何利用scipy.stats模块进行显著性检验,以判断样本与总体假设间的差异是否显著。通过示例代码展示了如何使用describe()函数获取数组的统计描述信息,如观测次数、最小最大值、均值、方差等。
22 1
|
12天前
|
Python
SciPy 教程 之 Scipy 显著性检验 6
显著性检验是统计学中用于判断样本与总体假设间是否存在显著差异的方法。SciPy的scipy.stats模块提供了执行显著性检验的工具,如T检验,用于比较两组数据的均值是否来自同一分布。通过ttest_ind()函数,可以获取两样本的t统计量和p值,进而判断差异是否显著。示例代码展示了如何使用该函数进行T检验并输出结果。
15 1
|
16天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
38 5
|
14天前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
23 1
|
16天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 插值 2
SciPy插值教程:介绍插值概念及其在数值分析中的应用,特别是在处理数据缺失时的插补和平滑数据集。SciPy的`scipy.interpolate`模块提供了强大的插值功能,如一维插值和样条插值。通过`UnivariateSpline()`函数,可以轻松实现单变量插值,示例代码展示了如何对非线性点进行插值计算。
20 3
|
19天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 4
本教程介绍了SciPy的空间数据处理功能,主要通过scipy.spatial模块实现。内容涵盖空间数据的基本概念、距离矩阵的定义及其在生物信息学中的应用,以及如何计算欧几里得距离。示例代码展示了如何使用SciPy计算两点间的欧几里得距离。
31 5
|
18天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 空间数据 6
本教程介绍了SciPy处理空间数据的方法,包括使用scipy.spatial模块进行点位置判断、最近点计算等内容。还详细讲解了距离矩阵的概念及其应用,如在生物信息学中表示蛋白质结构等。最后,通过实例演示了如何计算两点间的余弦距离。
26 3
|
17天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 7
本教程介绍了SciPy的空间数据处理功能,涵盖如何使用`scipy.spatial`模块进行点的位置判断、最近点计算等操作。还详细解释了距离矩阵的概念及其在生物信息学中的应用,以及汉明距离的定义和计算方法。示例代码展示了如何计算两个点之间的汉明距离。
26 1
|
21天前
|
Python
SciPy 教程 之 SciPy 图结构 7
《SciPy 教程 之 SciPy 图结构 7》介绍了 SciPy 中处理图结构的方法。图是由节点和边组成的集合,用于表示对象及其之间的关系。scipy.sparse.csgraph 模块提供了多种图处理功能,如 `breadth_first_order()` 方法可按广度优先顺序遍历图。示例代码展示了如何使用该方法从给定的邻接矩阵中获取广度优先遍历的顺序。
28 2