У меня возникли проблемы с пониманием того, как работает python argparse.argparse - Почему код выполняется без вызова?
В моем скрипте есть три позиционных аргумента, которые не принимают параметры: make, compile и clean. Я проделал это через подпарамеры, как говорит документация, но мой код продолжает работать без аргументов или даже с аргументами, что он не вызывает правильную функцию (он запускает Language(). Make() в каждом случае).
Мой argparse код:
lang = Language()
parser = argparse.ArgumentParser(description='e-cidadania language catalog generator.')
subparser = parser.add_subparsers()
parser_make = subparser.add_parser('make', help='Create all the language' \
' catalogs for translation,'\
' including JavaScript.')
parser_make.set_defaults(func=lang.make())
parser_compile = subparser.add_parser('compile', help='Compile all the language' \
' catalogs for use.')
parser_compile.set_defaults(func=lang.compile())
parser_clean = subparser.add_parser('clean', help='Delete all the language catalogs.' \
' After this you will'\
' have to rebuild the catalogs' \
' and translate them.')
parser_clean.set_defaults(func=lang.clean())
args = parser.parse_args()
Первая строка вызывает только класс в файле, называется Language
с тремя основными способами, make
, clean
и compile
и другие частные методы, _iterator
и __init__
.
Update Полный сценарий здесь: http://dpaste.com/hold/681317/
Что я пропускаю из документации для запуска этого?
Если ваша цель связана с простыми позиционными аргументами, я рекомендую вам взглянуть на любую из этих оберток argparse: http://plac.googlecode.com/hg/doc/plac.html http: //packages.python. org/argh/reference.html –
+1, не знал о них :) –
Мы все здесь, чтобы помочь друг другу :) –