Python argparse: Как я могу отобразить справку автоматически по ошибке?
Вопрос
В настоящее время, когда я ввожу недопустимые параметры или опускание позиционных аргументов, argparse выступает за возврат к подсказке и отображает использование для моего приложения. Это нормально, но я предпочел бы автоматически отображать полную информацию о помощи (который объясняет параметры и т. Д.), чем требуется, чтобы пользователь ввести
./myscript.py -h.
Спасибо!
Джейми
Решение
Этот нить В Google группах имеет следующий фрагмент кода, который, похоже, делает трюк (слегка изменена).
class DefaultHelpParser(argparse.ArgumentParser):
def error(self, message):
sys.stderr.write('error: %s\n' % message)
self.print_help()
sys.exit(2)
Другие советы
Чтобы распечатать помощь, вы можете использовать: print_help
функция включения ArgumentParser
пример
parser = argparse.ArgumentParser()
(...)
parser.print_help()
Чтобы распечатать справочное сообщение о ошибке, вам необходимо создать собственный подкласс ArgumentParser
экземпляр, который переопределяет error()
метод. Например, так:
class MyParser(argparse.ArgumentParser):
def error(self, message):
sys.stderr.write('error: %s\n' % message)
self.print_help()
sys.exit(2)
Когда этот парсер столкнулся с незапятнанным аргументом, она будет печатать справку.