Python argparse: aiuto Testo preformattato?
Domanda
sto usando argparse e voglio visualizzare un elenco nel testo di aiuto di una delle mie opzioni. Tuttavia, nastri argparse nuove linee del testo e lo visualizza su una sola riga.
C'è comunque da dire che la stringa argparse aiuto è preformattato, e non mettere a nudo caratteri di nuova riga?
Soluzione
docs :
RawTextHelpFormatter mantiene spazi per tutti i tipi di testo di aiuto compresa la descrizione degli argomenti.
from argparse import RawTextHelpFormatter
parser = ArgumentParser(description='test', formatter_class=RawTextHelpFormatter)
Altri suggerimenti
Se si desidera solo per ignorare l'un'opzione, non è possibile utilizzare RawTextHelpFormatter
. Invece sottoclasse il HelpFormatter
e fornire un intro speciale per le opzioni che dovrebbero essere trattati "raw" (io uso "R|rest of help"
):
import argparse
class SmartFormatter(argparse.HelpFormatter):
def _split_lines(self, text, width):
# this is the RawTextHelpFormatter._split_lines
if text.startswith('R|'):
return text[2:].splitlines()
return argparse.HelpFormatter._split_lines(self, text, width)
E usarlo:
from argparse import ArgumentParser
from textwrap import dedent
parser = ArgumentParser(description='test')
parser.add_argument('--list', help=dedent("""\
R|abc
def
ghi
"""))
parser.parse_args()
Tutte le altre chiamate al .add_argument()
in cui l'aiuto non inizia con R|
sarà avvolto come normale.
Questa è parte della miei miglioramenti sul argparse . Lo SmartFormatter completa supporta anche l'aggiunta di le impostazioni predefinite per tutte le opzioni, e l'input grezzo della descrizione utilità.