14 gennaio, 2020
Help (solo per me) - testo a colori
Continuo quanto iniziato nel post Help (solo per me) - format di Python, voglio rendere più leggibile l'output, chissà se...
L'idea è di usare le sequenze di escape ANSI, la Wiki la fa lunga ma quel che serve è molto meno, ecco il mio codice (txtco):
#!/usr/bin/python3
from sys import argv
dico = {'_bk' : '\033[030m', '_re' : '\033[031m', '_gr' : '\033[032m', \
'_ye' : '\033[033m', '_bl' : '\033[034m', '_ma' : '\033[035m', \
'_cy' : '\033[036m', '_wh' : '\033[037m', \
'_BK' : '\033[040m', '_RE' : '\033[041m', '_GR' : '\033[042m', \
'_YE' : '\033[043m', '_BL' : '\033[044m', '_MA' : '\033[040m', \
'_CY' : '\033[046m', '_WH' : '\033[047m', \
'_Bo': '\033[01m', '_Da': '\033[02m', '_Ul': '\033[04m', \
'_Bl': '\033[05m', '_Re': '\033[07m', '_Co': '\033[08m', \
'_ec' : '\033[0m', '_##' : ''}
# for c in dico:
# print(c, str(dico[c]), dico[c], '***', dico['_ec'])
if len(argv) == 1:
print('ARRGGH!!!')
exit(2)
idat = argv[1]
with open(idat, 'r') as finp:
txt = finp.read()
for c in dico:
txt = txt.replace(c, dico[c])
if len(argv) >= 2:
ocol = argv[2]
else:
ocol = '_' + idat
with open(ocol, 'w') as fout:
print('#!/bin/bash', file = fout)
print('cat << *EOC*', file = fout)
print(txt, file = fout)
print('*EOC*', file = fout)
Semplice e chiaro, vero? Si tratta di inserire codice di colore e attributi del testo nella forma _XX. I codici si possono sommare e restano attivi fino all'azzeramento con _ec. C'è anche il codice nullo, _## da inserire all'interno di una sequenza di caratteri che altrimenti sarebbe considerata codice; funziona anche con se stesso come si vede nell'esempio che costituisce l'help, questo (color-map):
_RE_BoMappa dei codici ANSI per colori e attributi del testo_ec
premettere _ al codice, così: _XX
lisci
_bk bk nero _re re rosso _gr gr verde _ye ye giallo _bl bl blu _ma ma magenta _cy cy cyan _wh wh bianco _ec
gasati
_BK BK nero _RE RE rosso _GR GR verde _YE YE giallo _BL BL blu _MA MA magenta _CY CY cyan _WH WH bianco _ec
attributi
_Bo Bo bold_ec _Da Da dark_ec _Ul Ul sottolineato_ec _Bl Bl blink_ec _Re Re reverse_ec _Co Co concealed _ec
codice neutro-spezza seq: _RE_#_###_ec
OK, non resta che provarlo:
Nota: ormai ci ho rinunciato, il sig. Blogspot spezza le righe troppo lunghe anche quando la loro lunghezza è considerata ragionevole da chiunque.
🔴🔵
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento