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对象里。

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 — 设置默认值

# Python学习交流QQ群:489111204 
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)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python的OptionParser模块教程 - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • Python学习:property装饰器

    1.property 装饰器:装饰器是在不修改被装饰对象源代码以及调用方式的前提下为被装饰对象添加新功能的可调用对象 property是一个装饰器,是用来绑定给对象的方法伪造成一个数据属性 装饰器property,可以将类中的函数“伪装成”对象的数据属性,对象在访问该特殊属性时会触发功能的执行,然后将返回值作为本次访问的结果。 使用property有效地保证…

    Python开发 2023年4月2日
    00
  • Python中的关键字的用法

    Python有哪些关键字 Python常用的关键字 and, del, from, not, while, as, elif, global, or, with, assert, else, if, pass, yield, break, except, import, print, class, exec, in, raise, contiue, fina…

    Python开发 2023年3月31日
    00
  • Http和Https的区别?

    1.HTTP是什么? http是超文本传输协议用来在web浏览器和网站服务器之间传递数据信息,http以明文的方式发送内容,不提供任何方式的数据加密,如果攻击者截获了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。为了解决http协议的这一缺陷,需要使用另一种协议:安…

    Python开发 2023年4月2日
    00
  • Python类和对象的绑定方法及非绑定方法

    类中定义的方法大致可以分为两类:绑定方法和非绑定方法。其中绑定方法又可以分为绑定到对象的方法和绑定到类的方法。 一、绑定方法 1 对象的绑定方法 在类中没有被任何装饰器修饰的方法就是 绑定到对象的方法,这类方法专门为对象定制。 class Person: country = “China” def __init__(self, name, age): sel…

    Python开发 2023年3月31日
    00
  • python3实现字符串的全排列的方法(无重复字符)两种解决方法

    抛出问题 求任意一个字符串的全排列组合,例如a=’123′,输出 123,132,213,231,312,321。(暂时假定字符串没有重复) 解决方案 目前有两种解决的方法 方法一: def str_sort(s=”): if len(s) <= 1: return [s] str_list = [] for i in range(len(s)): …

    Python开发 2023年3月31日
    00
  • Python学习:print 和return 的区别

    1、print() print()函数的作用是输出数据到控制台,就是打印在你能看到的界面上。 2、return return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。 return作为脚本单独运行时则需要print函数才能显示,但是在交互模式下,return的结果会自动打印出来 注:return是返回值…

    Python开发 2023年4月2日
    00
  • python学习:重用父类功能的两种方式

    在子类派生的新方法中如何重用父类的功能方式一:指名道姓调用某一个类下的函数=》不依赖于继承关系 class OldboyPeople: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def f1(self): print(‘%s say hello’ %se…

    Python开发 2023年4月2日
    00
  • Python迭代器是啥?

    迭代器:迭代的工具。迭代是更新换代,如你爷爷生了你爹,你爹生了你,迭代也可以说成是重复,并且但每一次的重复都是基于上一次的结果来的。如计算机中的迭代开发,就是基于软件的上一个版本更新。以下代码就不是迭代,它只是单纯的重复 while True: print(‘*’*10) 一、可迭代对象 python中一切皆对象,如 x = 1 name = ‘nick’ …

    Python开发 2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部