python optparse,可选选项的默认值

时间:2013-12-22 22:48:01

标签: python optparse

这更像是一个代码设计问题。什么是可选选项的良好默认值,这些选项的类型为string / directory / fullname of files?

让我们说我有这样的代码:

import optparse
parser = optparse.OptionParser()
parser.add_option('-i', '--in_dir', action = "store", default = 'n', help = 'this is an optional arg')
(options, args) = parser.parse_args()  

然后我这样做:

if options.in_dir == 'n':
    print 'the user did not pass any value for the in_dir option'
else:
    print 'the user in_dir=%s' %(options.in_dir)

基本上我想要有默认值,这意味着用户没有输入这样的选项而不是实际值。使用'n'是随意的,有更好的推荐吗?

2 个答案:

答案 0 :(得分:7)

您可以使用空字符串"",Python将其解释为False;你可以简单地测试一下:

if options.in_dir:
    # argument supplied
else:
    # still empty, no arg

或者,使用None

if options.in_dir is None:
    # no arg
else:
    # arg supplied 

请注意,后者是每the documentation个未提供参数的默认值。

答案 1 :(得分:3)

None怎么样?

没有任何要求默认值必须与选项本身的类型相同。

import optparse
parser = optparse.OptionParser()
parser.add_option('-i', '--in_dir', default=None, help='this is an optional arg')
(options, args) = parser.parse_args()  
print vars(options)

(ps。action="store"不是必需的; store是默认操作。)