知道是否有 clean 方式使optparse
绕过/处理通用-XXX
选项?
我的案例是一个应用程序,我希望提供一个less
类似选项,将应用程序的输出条目限制为-
之后定义的数字
e.g。
myapp.py list -10
我想我可以覆盖sys.argv
dict以避免optparse
引发错误并手动解析/删除自定义参数,但我想知道这是否是optparse lib预见并提供的情况更好的方法。
答案 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 ...