我正在使用命令行实用程序:optparse处理项目的一项要求。
假设我使用如下的add_option实用程序:
parser.add_option('-c','--categories', dest='Categories', nargs=4 )
如果用户未输入4个参数,我想为
check
选项添加-c
。像这样的东西:
if options.Categories is None:
for loop_iterate on nargs:
options.Categories[loop_iterate] = raw_input('Enter Input')
如何访问add_option()的nargs?
PS:我不想使用
print.help()
进行检查并执行exit(-1)
请有人帮忙。
最佳答案
AFAIK optparse
不会通过parse_args
的结果在公共API中提供该值,但是您不需要它。
您可以在使用前简单地命名常量:
NUM_CATEGORIES = 4
# ...
parser.add_option('-c', '--categories', dest='categories', nargs=NUM_CATEGORIES)
# later
if not options.categories:
options.categories = [raw_input('Enter input: ') for _ in range(NUM_CATEGORIES)]
实际上,
add_option
方法返回确实具有Option
字段的nargs
对象,因此您可以执行以下操作:categories_opt = parser.add_option(..., nargs=4)
# ...
if not options.categories:
options.categories = [raw_input('Enter input: ') for _ in range(categories_opt.nargs)]
但是,我真的不明白这比首先使用助攻剂更好。