Я использую Python 3.6.3 и у меня есть этот кусок кода:
import argparse
from argparse import RawTextHelpFormatter
parser = argparse.ArgumentParser(prog='foobar',
formatter_class=RawTextHelpFormatter)
parser.add_argument('-lf', '--logfile', dest='logfile', default='/dev/null',
help='some very long help message goes here ..............................\n' +
'more text here xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
subparsers = parser.add_subparsers()
abcd_parser = subparsers.add_parser('abcd')
abcd_parser.add_argument('zzz', nargs='+',
help='A very long help message\ngoes here...... more help text goes here zzzzzzz zzzzzzzzzzzzzzzzzzzzzzz ')
args = parser.parse_args()
Вывод справки выглядит следующим образом:
$ ./foobar -h
usage: foobar [-h] [-lf LOGFILE] {abcd} ...
positional arguments:
{abcd}
optional arguments:
-h, --help show this help message and exit
-lf LOGFILE, --logfile LOGFILE
some very long help message goes here ..............................
more text here xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Приведенный выше вывод не переноситТекст справки, как и ожидалось (кроме случаев, когда я явно вставил "\ n")
Однако вывод справки для подпаратера выглядит следующим образом:
$ ./foobar abcd -h
usage: foobar abcd [-h] zzz [zzz ...]
positional arguments:
zzz A very long help message goes here...... more help text goes
here zzzzzzz zzzzzzzzzzzzzzzzzzzzzzz
optional arguments:
-h, --help show this help message and exit
- Как я могу получить«идет сюда» для печати на новой строке (я указал «\ n», но это не сработало)
- Как отключить перенос строки, чтобы весь текст справки для «zzz»аргумент в одной строке?