J'utilise argparse et je veux afficher une liste dans le texte d'aide de l'une de mes options. Cependant, argparse supprime les nouvelles lignes du texte et les affiche sur une seule ligne. Y at-il moyen de dire à argparse que la chaîne d'aide est préformatée, et de ne pas dépouiller les nouveaux caractères de ligne?Python argparse: texte d'aide préformaté?
Répondre
De l'docs:
RawTextHelpFormatter maintient des espaces pour toutes sortes de texte d'aide, y compris description des arguments.
from argparse import RawTextHelpFormatter
parser = ArgumentParser(description='test', formatter_class=RawTextHelpFormatter)
est-il un moyen de le faire pour une seule option? ça bousille le mot enveloppant pour les autres – petraus
il suffit de lire le lien de @ barti_ddu. mon commentaire est un dupe aussi. merci – petraus
Oui, cette question a déjà été répondue mais j'ai lu son commentaire après l'avoir posté et j'ai donc pensé à le laisser rester :) – user225312
Si vous voulez juste passer outre une option, vous ne pouvez pas utiliser RawTextHelpFormatter
. sous-classe au lieu du HelpFormatter
et de fournir une intro spéciale pour les options qui doivent être traitées « brut » (j'utilise "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)
et de l'utiliser:
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()
Tous les autres appels à .add_argument()
où le l'aide ne commence pas avec R|
sera enveloppé comme d'habitude.
Ceci fait partie de my improvements on argparse. Le SmartFormatter complet prend également en charge l'ajout de les valeurs par défaut à toutes les options, et l'entrée brute de la description des utilitaires.
dup: http://stackoverflow.com/questions/3853722/python-argparse-how-to-insert-newline-the-help-text? –