Если бы я делал это, используя optparse (или в этом случае argparse - при условии, что вы хотите добавить флаг --cleanup и --no-cleanup в одну команду), я бы просто создал подкласс класса синтаксического анализатора опций.Что-то вроде:
from optparse import OptionParser
class MyOptParse(OptionParser):
def boolean(self,dest,**kwargs):
self.add_option('--%s'%dest,dest=dest,action='store_true',**kwargs)
self.add_option('--no-%s'%dest,dest=dest,action='store_false',**kwargs)
Конечно, это полный взлом, но я думаю, что совершенно очевидно, куда я иду с этим ... Вы можете заставить булево поведение вести себя так, как хотите (переформатированиесправка, принимая значение по умолчанию, чтобы в качестве значения по умолчанию было указано «--blah» или «--no-blah» и т. д.)
Я думаю, что
parser=MyOptParse()
parser.boolean('cleanup',default=True,help="Do/Do Not do cleanup")
должен работать и избавиться от строки if options.cleanup is None
, пока она включена, поскольку установлено значение по умолчанию, хотя сообщение справки будет повторяться (с предоставленным мною кодом)
Если вы просто хотите добавить значения по умолчанию дляопределенный флаг (чтобы избавиться от проверки для None
), вы можете использовать ключевое слово по умолчанию для add_option, OR, согласно документации optparse ...
Более понятный способ указать значение по умолчаниюзначения set_defaults () метод операцииionParser, который вы можете вызвать в любое время перед вызовом parse_args () : например, parser.set_defaults(verbose=True)