Если вам не нужно выполнять сложный анализ аргументов, я рекомендую модуль baker . Это позволяет вам определять подкоманды и их аргументы через декораторы. Например:
#!/usr/bin/env python
import baker
@baker.command()
def foo(a=1):
print 'foo:', a
@baker.command()
def baz(b=1):
print 'baz:', b
baker.run()
определяет две подкоманды foo
и baz
с (необязательными) параметрами a
и b
.
Таким образом, вы можете использовать их так:
$ ./test_baker.py foo --a 2
foo: 2
$ ./test_baker.py baz
baz: 1
Он также использует строки документации для генерации справки.
Поскольку модуль baker
является глобальным, ваши подкоманды могут охватывать несколько файлов .py
. Пока они импортируются, подкоманды будут автоматически регистрироваться.
Более того, это всего лишь один .py
файл, так что вы можете просто поместить его в дерево исходных текстов.