Я использую отличную библиотеку Python Click для обработки параметров командной строки в моем инструменте. Вот упрощенная версия моего кода (полный скрипт здесь):
@click.command(
context_settings = dict( help_option_names = ['-h', '--help'] )
)
@click.argument('analysis_dir',
type = click.Path(exists=True),
nargs = -1,
required = True,
metavar = "<analysis directory>"
)
def mytool(analysis_dir):
""" Do stuff """
if __name__ == "__main__":
mytool()
Если кто-то запускает команду без каких-либо флагов, он получает сообщение об ошибке по умолчанию:
$ mytool
Usage: mytool [OPTIONS] <analysis directory>
Error: Missing argument "analysis_dir".
Это хорошо, но я очень хотел бы сообщить (очень) начинающим пользователям, что дополнительная помощь доступна при использовании флага помощи. Другими словами, добавьте специальное предложение в сообщение об ошибке, когда команда недействительна, предлагая людям попробовать mytool --help
для получения дополнительной информации.
Есть простой способ сделать это? Я знаю, что мог бы удалить атрибут required
и обработать эту логику в основной функции, но для такого незначительного дополнения это кажется хакерским.
command.main(['command-name', 'args', 'go', 'here'])
. Я нигде не нашел примеров и сдался. Если у вас есть какие-либо указания о том, как применить это с синтаксисом в приведенном выше примере, это было бы очень полезно! - person ewels   schedule 02.05.2017