Python 使用usage.Options检查命令行参数

Python 使用usage.Options检查命令行参数,python,parameters,twisted,Python,Parameters,Twisted,我正在使用usage.Options解析和检查命令行参数 #!/usr/bin/python from twisted.python import usage import sys class Options(usage.Options): """ Defines the default input parameters """ optParameters = [ ["param", "p", 1, "Int Parameter"

我正在使用usage.Options解析和检查命令行参数

#!/usr/bin/python

from twisted.python import usage
import sys

class Options(usage.Options):
    """
       Defines the default input parameters
    """
    optParameters = [
            ["param", "p", 1, "Int Parameter", int],
        ]

if __name__ == "__main__":

    options = Options()
    try:
        options.parseOptions()
    except Exception, e:
        print '%s: %s' % (sys.argv[0], e)
        print '%s: Try --help for usage details.' % (sys.argv[0])
        sys.exit(1)
    else:
        if options['param'] < 0 or options['param'] > 10: 
            print "param out of the range [0,10]"
            sys.exit(1)
#/usr/bin/python
从twisted.python导入用法
导入系统
类选项(用法.选项):
"""
定义默认输入参数
"""
OPT参数=[
[“param”,“p”,1,“Int参数”,Int],
]
如果名称=“\uuuuu main\uuuuuuuu”:
选项=选项()
尝试:
options.parseOptions()
除例外情况外,e:
打印“%s:%s%”(sys.argv[0],e)
打印“%s:请尝试--有关用法详细信息的帮助”。%(sys.argv[0])
系统出口(1)
其他:
如果选项['param']<0或选项['param']>10:
打印“参数超出范围[0,10]”
系统出口(1)
我不知道如何检查输入
param
的值是否是一个数字。如果用户意外插入了一封信,他会收到以下信息:

参数类型强制失败:基为的int()的文本无效 10:‘d’


为什么不使用optpass

from optparse import OptionParser
options, args = parser.parse_args()

def args():
    parser = OptionParser(usage='usage: %prog [options]', version='%prog 1.0.0')
    parser.add_option(.....)
    return parser
更新: 你可以吃这样的东西。添加并替换所需的所有内容:

class Main:
    def __init__(self):
        parser = self.get_arg()
        self.set_arg(parser)

    def set_arg(self, parser):
        options, args = parser.parse_args()
        if len(sys.argv) == 1:
            print 'Error: Usage: python %s <options>' % sys.argv[0]
            sys.exit()
        input_file = options.input_file
        flag = options.flag

    def get_arg(self):
        parser = OptionParser(usage='usage: %prog [options]', version='%prog 1.1.0')
        parser.add_option('-i', '--input-file', action='store', type='string', dest='input_file', default=None,
                            help='Input file.')
        parser.add_option('-f', '--flag', action='store_true', dest='flag', default=False,
                            help='A flag in your app')
        return parser

if __name__ == '__main__':
    Main()
主类:
定义初始化(自):
parser=self.get_arg()
self.set_arg(解析器)
def set_参数(自身,解析器):
选项,args=parser.parse_args()
如果len(sys.argv)==1:
“打印”错误:用法:python%s“%sys.argv[0]
sys.exit()
输入文件=选项。输入文件
flag=options.flag
def get_参数(自身):
parser=OptionParser(用法='用法:%prog[options]',版本='%prog 1.1.0')
parser.add_选项('-i','-input file',action='store',type='string',dest='input_file',default=None,
help='Input file'。)
parser.add_选项('-f','-flag',action='store_true',dest='flag',default=False,
help='A应用程序中的标志')
返回解析器
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
Main()

如何使用OptionParser重现上述示例?感谢示例
type='string'
必须是
type='int'