2010-09-03 5 views
13

В настоящее время, когда я ввожу неверные параметры или опускаю позиционные аргументы, argparse возвращает меня в приглашение и отображает использование моего приложения. Это нормально, но я предпочел бы автоматически отображать список полной справки (что объясняет варианты, и т.д.), чем требует от пользователя ввестиpython argparse: Как я могу автоматически отображать справку об ошибке?

./myscript.py -h

Спасибо!

Джейми

+0

смотри также этот вопрос SO для получения дополнительной информации: [http://stackoverflow.com/questions/4042452][1] [1]: http://stackoverflow.com/questions/4042452 – jpoppe

ответ

13

Это thread более в группах Google имеет следующий фрагмент кода, который, кажется, сделать трюк (слегка измененный).

class DefaultHelpParser(argparse.ArgumentParser): 
    def error(self, message): 
     sys.stderr.write('error: %s\n' % message) 
     self.print_help() 
     sys.exit(2) 
+3

Не имеет смысла использовать 'self.print_help (sys.stderr)' здесь? –

20

Для печати помощь вам может понадобиться использовать: 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) 

Когда этот парсер встречает бесперспективную строку аргумента, он распечатает справку.