如何访问optparse-add_action的nargs?

时间:2014-06-18 12:14:09

标签: python python-2.7 optparse

我正在使用命令行实用程序为我的项目制定一项要求: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()的内容。?

PS:我不想使用print.help()进行检查并执行exit(-1)

请有人帮忙。

1 个答案:

答案 0 :(得分:2)

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字段的categories_opt = parser.add_option(..., nargs=4) # ... if not options.categories: options.categories = [raw_input('Enter input: ') for _ in range(categories_opt.nargs)] 对象,因此您可以执行以下操作:

{{1}}

但是我真的不知道这比首先使用costant更好。