argparser.print_help () не печатает полное сообщение - PullRequest
1 голос
/ 28 сентября 2019

У меня есть программа, в которой я пытался вставить справку в мой код, используя argparse:

import argparse,sys

parser = argparse.ArgumentParser(description='prog desc')
parser.add_argument('path', help='name of directory')
args = parser.parse_args() 
parser.print_help()

, это печатает:

>python testArgs.py
usage: testArgs.py [-h] path
testArgs.py: error: too few arguments

, но я ожидаю того же, как если бы я вошел-h:

>python testArgs.py -h
usage: testArgs.py [-h] path

prog desc

positional arguments:
  path        name of directory

optional arguments:
  -h, --help  show this help message and exit

Но если я переключу положение print_help () перед parse_args (), то он будет работать правильно:

import argparse,sys

parser = argparse.ArgumentParser(description='prog desc')
parser.add_argument('path', help='name of directory')
parser.print_help()
args = parser.parse_args() 

output:

>python testArgs.py
usage: testArgs.py [-h] path

prog desc

positional arguments:
  path        name of directory

optional arguments:
  -h, --help  show this help message and exit
usage: testArgs.py [-h] path
testArgs.py: error: too few arguments

Что я делаю не так?

1 Ответ

1 голос
/ 28 сентября 2019

В вашем первом примере ваша программа не достигает метода parser.print_help(), она терпит неудачу на parser.parse_args(), печатает сообщение об ошибке по умолчанию (testArgs.py: error: too few arguments) и выходит из программы.

InВаш второй пример, когда вы переключаетесь между функциями, он по-прежнему ведет себя так же, но вы видите подробности справки, потому что вы вызывали функцию print_help() до сбоя программы (вы можете увидеть, что она не работает, потому что она по-прежнему печатает сообщение об ошибке в конце).

Если вы хотите напечатать справочное сообщение при возникновении ошибки argparse, прочитайте этот пост: Отображение справочного сообщения с python argparse при вызове сценария без каких-либо аргументов

...