使用 usage.Options 检查命令行参数
Checking command-lines parameters with usage.Options
我正在使用 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)
我不知道如何检查输入 param
的值是否为数字。如果用户不小心插入了一个字母,他会得到这个:
Parameter type enforcement failed: invalid literal for int() with base
10: 'd'
为什么不使用 optparse?
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()
我正在使用 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)
我不知道如何检查输入 param
的值是否为数字。如果用户不小心插入了一个字母,他会得到这个:
Parameter type enforcement failed: invalid literal for int() with base 10: 'd'
为什么不使用 optparse?
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()