Seite 1 von 1
Farben etc. in Kommandozeile?
Verfasst: Samstag 20. September 2003, 10:22
von VoLANo
Hallo!
Ich möchte der Übersicht halber Farben in mein Kommandozeilen-Tool einbauen. Gibt es da eine Möglichkeit?
Was auch noch nett wäre, wo ich mir aber (fast) sicher bin dass es nicht geht .. eine Art Progressbar, also am Anfang siehts so aus.
[----------]
und dann irgendwann:
[||||||||--]
falls das jemand versteht ..
Grüße, VoLANo
Verfasst: Samstag 20. September 2003, 10:50
von Dookie
Hi VoLANo,
wenns für Unix/Linux sein soll, schau Dir mal curses an
http://www.python.org/doc/current/lib/m ... urses.html
Dookie
Verfasst: Samstag 20. September 2003, 12:35
von Beyond
Oder benutze entsprechende Escape-Sequenzen!
Google mal danach.
Allerdings ist die Ausgabe dann relativ unrauchbar, um sie in Dateien zu loggen.
Daher habe das wieder aufgegeben.
(mit cat kann man natürlich die Ausgabe herstellen ...)
cu beyond
Fortschrittsbalken
Verfasst: Montag 13. Oktober 2003, 10:03
von jocsch
Hallo!
Eine kleine Fortschrittsbalkenfunktion (ziemlich flexibel konfigurierbar) habe ich mal programmiert:
Code: Alles auswählen
#!/usr/lib/python
from sys import stdout
def showProgress(out, p, typ = 'bar', barlenght = 40, yop = '-', nop = '=', lt = '[', rt = ']'):
if typ == 'percent':
stdout.write('%3i%%\r' % (100 * p))
elif typ == 'bar':
l = int(barlenght * p)
l0 = barlenght - l
stdout.write(lt + yop * l + nop * l0 + rt +
'\r')
elif typ == 'value':
stdout.write('%s\r' % p)
if __name__=='__main__':
x = 100000
for i in xrange(x+1):
showProgress(stdout, float(i)/float(x), 'bar')
print
print 'operation successfuly completed.'
Einfach mal ausprobieren - immer dankbar für Kommentare!!!
Gruss, jocsch
Verfasst: Montag 13. Oktober 2003, 12:37
von joerg
Hallo,
an Fortschrittsbalken habe ich auch noch einen zu bieten, etwas mehr Funktionalität als bei jocsch, dafür aber auch viel mehr Code. ;-(
Zu beachten ist, daß eine korrekte Funktion von '\r' (Cursor auf den Zeilenanfang setzen) Voraussetzung ist. Das geht z.B. innerhalb von IDLE nicht.
Jörg
Code: Alles auswählen
import sys
class Spinner(list):
"""list that behaves like a ring buffer,
next() gives the next element, starting over
when done"""
def __init__(self, *arg, **kwarg):
list.__init__(self, *arg, **kwarg)
self._index = -1
def next(self):
if self._index < (len(self)-2):
self._index += 1
else:
self._index = 0
return self[self._index]
class TxtScale:
def __init__(self, width=40, template='[%s%c%s] % 10g |',
arrow='^', leftSign='-', rightSign='-',
minVal=0.0, maxVal=1.0):
self.width = width
self.template = template
self.arrow = arrow
self.leftSign = leftSign
self.rightSign = rightSign
self.minVal = minVal
self.maxVal = maxVal
def set(self, val, *args):
v = max(min(val, self.maxVal), self.minVal)
i = (int(round(self.width * (v - self.minVal)/(self.maxVal-self.minVal))) or 1) - 1
j = self.width-i-1
sys.stdout.write('\r')
sys.stdout.write(self.template % ((self.leftSign*i, self.arrow,
self.rightSign*j, val)+args))
sys.stdout.flush()
def clear(self):
sys.stdout.write('\r')
sys.stdout.flush()
if __name__ == '__main__':
import time, math
def test1():
print "This is a scale:"
s = TxtScale(10, minVal=-1.0, maxVal=1.0, template='<%s%c%s> x = % 10g')
for i in range(100):
s.set(math.sin(i/10.0))
time.sleep(0.05)
print
def test2():
print "This is a progress bar:"
p = TxtScale(40, minVal=0.0, maxVal=100.0,
leftSign='#', arrow='#', rightSign=' ',
template= '|%s%c%s| % 3d%% | %s')
for i in range(101):
p.set(i, (i < 100) and 'Running' or 'Done \n')
time.sleep(0.05)
def test3():
print "This is a progress bar with a spinner:"
p = TxtScale(40, minVal=0.0, maxVal=100.0,
leftSign='#', arrow='#', rightSign=' ',
template= '|%s%c%s| % 3d%% %c')
x = Spinner('|/-\\')
#x = Spinner(' .o0O0o.')
for i in range(101):
p.set(i, x.next())
time.sleep(0.05)
print
test1()
test2()
test3()
Verfasst: Montag 13. Oktober 2003, 15:10
von jocsch
Gut das!
Was haltet ihr denn von einer kleinen Fortschrittsbalken - Hall of fame ... ?
gruesse jocsch
Verfasst: Dienstag 14. Oktober 2003, 11:11
von joerg
jocsch hat geschrieben:Gut das!
Was haltet ihr denn von einer kleinen Fortschrittsbalken - Hall of fame ...
Oh, das ist bestimmt spaßig. Irgendwann gibt es dann ASCII-Art-Häschen, die von links nach rechts hoppeln, und dazu rechts einen Igel, die einen dummen Spruch macht (Fortschrittsbalken mit Sound), oder so ähnlich.
Grüße!
Jörg