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?

È stato utile?

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à.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top