Frage

Ich mache einen Shell-Skript mit dem optparse Modul, jut für Spaß, so dass ich ein schöne ascii Zeichnung anstelle der Beschreibung drucken wollte.

Es stellt sich heraus, dass dieser Code:

parser = optparse.OptionParser(
    prog='./spill.py',
    description=u'''
  /     \                                     
  vvvvvvv  /|__/|                             
      I   /O,O   |                            
      I /_____   |      /|/|                 
     J|/^ ^ ^ \  |    /00  |    _//|          
      |^ ^ ^ ^ |W|   |/^^\ |   /oo |         
       \m___m__|_|    \m_m_|   \mm_|         
''',
    epilog='''
        Las cucarachas lograron con exito su plan, echando a los pestilentes sangre caliente de sus cajas de cemento. 
Ahora el hombre es una especie errante en el espacio, un vagabundo errante en las estrellas.''')

macht wie folgt aus:

$ ./bin/spill.py -h
Usage: ./spill.py [options]

   /     \                                        vvvvvvv  /|__/|
I   /O,O   |                                   I /_____   |      /|/|
J|/^ ^ ^ \  |    /00  |    _//|                 |^ ^ ^ ^ |W|   |/^^\ |   /oo |
\m___m__|_|    \m_m_|   \mm_|

Options:
  -h, --help            show this help message and exit
#.... bla bla bla, etc

Ich habe eine Variierung Kombination aus Schrägstrichen versucht, Zeilenumbrüche und espaces ohne Erfolg.

Können Sie, Freund pytonista, hilf mir Totoro richtig angezeigt?

War es hilfreich?

Lösung

Das Standard-Formatierungsprogramm, IndentedHelpFormatter, ruft diese Methode:

 def format_description(self, description):
    if description:
        return self._format_text(description) + "\n"
    else:
        return ""

Wenn Sie Unterklasse IndentedHelpFormatter, können Sie den self._format_text Anruf entfernen, die das Problem verursacht:

import optparse

class PlainHelpFormatter(optparse.IndentedHelpFormatter): 
    def format_description(self, description):
        if description:
            return description + "\n"
        else:
            return ""

parser = optparse.OptionParser(
    prog='./spill.py',
    formatter=PlainHelpFormatter(),
    description=u'''
  /     \                                     
  vvvvvvv  /|__/|                             
      I   /O,O   |                            
      I /_____   |      /|/|                 
     J|/^ ^ ^ \  |    /00  |    _//|          
      |^ ^ ^ ^ |W|   |/^^\ |   /oo |         
       \m___m__|_|    \m_m_|   \mm_|         
''',
    epilog='''
        Las cucarachas lograron con exito su plan, echando a los pestilentes sangre caliente de sus cajas de cemento. 
Ahora el hombre es una especie errante en el espacio, un vagabundo errante en las estrellas.''')
(opt,args) = parser.parse_args()

Andere Tipps

Sorry für den Thread Nekromantie, aber für diejenigen, die 2.7 aufgerüstet Sie jetzt leicht Ascii Art in Ihrer Beschreibung durch einfaches Durchleiten

angezeigt werden können
formatter_class=argparse.RawDescriptionHelpFormatter

zu argparse.ArgumentParser ()

finden Sie unter http://docs.python.org/2/library /argparse.html#formatter-class zum Beispiel!

Wenn alles andere fehlschlägt, verwenden Sie Code-Generierung.

Der einfachste Weg wäre, eine Textdatei erstellen Sie Ihre gewünschte Ausgabe enthält, und base64 kodieren und betten sie in einer Py-Datei, die eine globale Variable aussetzt

Nun müssen Sie die erzeugte Py, Base64 dekodieren sind, und drucken Sie die globale Variable und alles funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top