[Python] personalizzare optparse

Gollum1 gollum1.smeagol1 a gmail.com
Gio 23 Maggio 2013 17:35:31 CEST


Ciao Lista,

dopo la puntata delle "variabili globali tra più moduli", arrivo con
un'altra domandina bella bella...

proprio da quel thread è scaturito che per la gestione della riga di
comando optparse è un buon tool.

perfetto, me lo sono studiato per un po' ed ora sto cercando di
implementarlo. sull'uso mi pare che non ci siano grossi problemi, le
opzioni le aggiungo di volta in volta, mano a mano che procedo con lo
sviluppo. per quanto riguarda invece i parametri obbligatori, che nel
mio caso possono essere 2 o 3 a seconda di cosa dice il primo di
questi parametri, mi pare di aver capito che sono esclusivamente
posizionali (ed infatti li trovo elencati in args, che viene
restituito a optparse).

Non è un grosso problema, in quanto tutti i parametri sono facilmente
verificabili nella loro correttezza.

il problema però mi sovviene nel momento in cui voglio far generare un
help a optparse, un help che sia coerente anche con questi parametri.
optparse mi genere l'help con le sole righe che ho aggiunto che siano
però parametri opzionali, questi argomenti posizionali non riesco a
farli rientrare nell'help.

altro problema che ho riscontrato è quello di non poter creare un help
multilinea utilizzando description e epilog. optparse cerca sempre di
formattare l'output come vuole, e si perde anche i ritorni a capo che
vado ad inserire.

l'unico che mi permette di dare una formattazione mia è usage,

fatto sta che se metto le descrizioni dei parametri posizionali in
usage, hanno una formattazione completamente diversa dai parametri
opzionali.

ultima cosa, essendo tutte stringhe che metto io, posso localizzarle
facilmente, uniche due stringhe che non riesco a localizzare sono
proprio la scritta "usage:" e la scritta "options:"

a qualcuno viene in mente come potrei modificare le cose? una classe
derivata? una @property (le trovo parecchio interessanti, anche se ho
capito si e no come si utilizza),

Byez
--
Gollum1
Tesssssoro, dov'é il mio tessssoro...


Maggiori informazioni sulla lista Python