optparse的另一种语法

runfunc的Python项目详细描述


runfunc
==


我喜欢optfunc,但它还没有被放到pypi上以供实际使用,所以我继续
并重新编写它以使用不同的语法,以便能够包括option help
和输入验证器。

作为rf

类帮助(rf.help):
"\
这是一个关于此程序的简介。观看并思考我们可以用它做些什么是非常有趣的。格式化文本。

("r","要读取的输入文件。",opt='r')
verbose=rf.flag("verbosely.",opt='v')

def main(value,factor=2.0,random=sys.stdin,verbose=false):
newval=value*factor
如果verbose:
打印%d*%s=%s"(value,fa)ctor,newval)
其他:
打印newval

rf.run(main,help())



帮助类
==


使用"runfunc"的基本大纲是创建"runfunc.help"的子类并在运行函数时使用"提供此类"。此子类负责指定传递给
函数的所有可能参数。它可以包含被忽略的额外参数,以便同一个
子类可以被多个命令行脚本重用。


类帮助(rf.help):
"\
这是一个关于此程序的模糊说明。观看并思考我们可以用它做些什么是非常有趣的。格式化文本。

要从中读取的输入文件。",opt="r"
verbose=rf.flag("verbosely.",opt="v")


注意:

*类的doc字符串将用作程序的帮助说明
*如果存在"usage"属性,则它将用于程序的帮助
*从"runfunc.arg"继承的任何其他属性都将可用作程序参数。


运行函数
==
==runfunc.run(可调用,帮助对象,argv=none,check=true)

*"可调用"是可调用对象。
*"帮助对象"是一个实例。继承自"runfunc.help"的类的ce。
*"argv"是参数列表。如果没有,则使用"sys.argv[1:]"
*"check=true"将阻止函数作为模块导入时运行。


*func-接受单个参数的可调用函数。出现错误时引发异常。
*desc-描述选项
*opt-单个字符选项名称的帮助消息。


flag(desc,opt=none)
----


根据选项的存在传递true。通常只适用于
关键字参数。

*desc-描述选项的帮助消息
*opt-单个字符选项名称。

list(desc,opt=none,validator=none)
--------


验证程序在附加每个
值之前应用。

*desc-描述选项
*opt-单个字符选项名称的帮助消息。
*validator-接受单个参数的可调用函数。出现错误时引发异常。

choice(choices,desc,opt=none,validator=none)
——验证程序在测试集合中的成员资格之前应用。


*choices-一个在对象上提供项目访问权以测试是否允许选项。
*desc-描述选项的帮助消息
*opt-一个单字符选项名称。
*validator-一个可调用的,接受一个契约。出现错误时引发异常。

regexp(pattern,desc,opt=none,flags=0)
---------------------------


需要输入以匹配正则表达式。

*pattern-可用于"重新编译(pattern,flags)"的字符串option
*opt-单个字符的选项名称。
*flags-编译正则表达式的任何修饰符


email(desc,opt=none)
----


需要输入,使其看起来像有效的电子邮件地址。regexp

*desc的子类-描述选项
*opt-单个字符选项名称的帮助消息。

=--


需要输入一个有效的IP地址。regexp的子类。

*desc-描述选项
*opt-单个字符选项名称的帮助消息。

path(flags,desc,opt=none)
----


需要输入指定路径。根据通过的标志执行测试。文件要求路径看起来像文件(没有尾随路径
说明符)。dir需要后面的路径说明符。exists将检查
路径是否实际存在。父级要求路径的父级存在。任何
标志的组合都可以通过传递文件dir来传递,这将保证在验证期间出现
错误。

*flags-文件dir的or存在,parent
*desc-描述选项
*opt-单字符选项名称的帮助消息。

stream(mode,desc,opt=无)
----------

打开一个用作"文件"对象的路径。一个有用的模式是使用默认值"sys.stdin"、"sys.stdout"或"sys.stderr"作为通用命令行
语义。

*mode-打开流时传递给"open(path,mode)"
*desc-描述选项的帮助消息
*opt-单个字符选项名。

custom validators
==ass range(rf.arg):
def初始(self,func,left,right,desc,opt=none):
超级(range,self)。\uu初始(desc,opt=opt)
self.func=func
self.left=left
self.right=right

def validate(self,option,optstr,value,parser):
value=self.func(value)
如果value<;self.left或value>;self.right:
提升rf.optionvalueerror("value is outside range.")
setattr(parser.values,option.dest,value)

注意func是spec使用户可以将原始值转换为适当的数据类型。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Maven无法识别安装在Ubuntu外壳上的$java_HOME jdk   java如何防止可运行程序在其中一个抛出异常时执行   java Listview在按下项时不触发   如何在WindowsPhone8中使用JavaRESTWebService?   java在spring引导下使用多个dispatcher servlet/web上下文   java为什么在删除容器的绝对大小时不绘制GEF子项?   java在hibernate实体中保留DB约束是好的   JavaSpring选择最高优先级bean   ArrayList<Class>java字符串[]   有向加权边图的Java邻接表实现   字母数字字符串的java Tesseract配置:混合2、Z、6和G   如果输入为空,则带有EditText的java警报对话框将关闭   jsp上的java Struts 2动作响应   java获取IndexOutOfBundException Android   scala AWSJAVASDK:解压缩大小必须小于262144000字节