Python参数提供类似限制功能

时间:2011-11-16 19:26:59

标签: python command-line-arguments optparse

知道是否有 clean 方式使optparse绕过/处理通用-XXX选项?

我的案例是一个应用程序,我希望提供一个less类似选项,将应用程序的输出条目限制为-之后定义的数字

e.g。

myapp.py list -10

我想我可以覆盖sys.argv dict以避免optparse引发错误并手动解析/删除自定义参数,但我想知道这是否是optparse lib预见并提供的情况更好的方法。

1 个答案:

答案 0 :(得分:0)

在argparse中,您可以定义一个可选的位置整数参数。然后,负值将向用户显示提供选项:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('limit', type=int, nargs='?')
args = parser.parse_args()
if args.limit is not None:
    print "Limiting to %d." % -args.limit

在这种情况下,默认帮助文字不合理,但可以使用metavar关键字参数调整为add_argument,例如使用"-n"

我只能用一种讨厌的方式用optparse做到这一点。基本上为数字可以开始的每个数字定义一个单独的选项:

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-1")
parser.add_option("-2")
options,args = parser.parse_args()
if options.__dict__["1"] is not None:
    print "Your number was %d." % (int("1"+options.__dict__["1"]))
elif options.__dict__["2"] is not None:
    print "Your number was %d." % (int("2"+options.__dict__["2"]))

依此类推,所有数字最多为9.还要考虑是否需要考虑0 ...