1610 Stimmen

Wie kann ich die Ausgabe der Druckfunktion spülen (Python-Ausgabe entpuffern)?

Wie erzwinge ich Pythons print Funktion zur Ausgabe auf dem Bildschirm?

12voto

guettli Punkte 23426

Hier ist meine Version, die auch writelines() und fileno() bietet:

class FlushFile(object):
    def __init__(self, fd):
        self.fd = fd

    def write(self, x):
        ret = self.fd.write(x)
        self.fd.flush()
        return ret

    def writelines(self, lines):
        ret = self.writelines(lines)
        self.fd.flush()
        return ret

    def flush(self):
        return self.fd.flush

    def close(self):
        return self.fd.close()

    def fileno(self):
        return self.fd.fileno()

8voto

kmario23 Punkte 49380

Ich habe es in Python 3.4 so gemacht:

'''To write to screen in real-time'''
message = lambda x: print(x, flush=True, end="")
message('I am flushing out now...')

5voto

Guillaume Mougeot Punkte 123

Ich hatte zunächst Schwierigkeiten zu verstehen, wie die Spüloption funktionierte. Ich wollte eine "Ladeanzeige" erstellen, und hier ist die Lösung, die ich gefunden habe:

for i in range(100000):
    print('{:s}\r'.format(''), end='', flush=True)
    print('Loading index: {:d}/100000'.format(i+1), end='')

Die erste Zeile löscht den vorherigen Ausdruck und die zweite Zeile druckt eine neue aktualisierte Nachricht. Ich weiß nicht, ob hier eine einzeilige Syntax existiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X