Python argparse: Как я могу отобразить справку автоматически по ошибке?

StackOverflow https://stackoverflow.com/questions/3636967

  •  30-09-2019
  •  | 
  •  

Вопрос

В настоящее время, когда я ввожу недопустимые параметры или опускание позиционных аргументов, 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)

Когда этот парсер столкнулся с незапятнанным аргументом, она будет печатать справку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top