windows - Python Multiple Line Terminal Update

Indlæg af Hanne Mølgaard Plasc

Problem



Kort spørgsmål

Er det muligt/praktisk at skrive og opdater en multi-line (indeholder streng på en Windows-terminal?


Baggrund

Jeg har kigget på forbandelser, men det er kun Unix. Jeg så et par andre Window-porte, men det var lidt foruroligende, at Windows XP var et eksperimentelt OS til en dem. Jeg håber at bruge dette som led i en diagnostisk funktion til at vise linkstatus, meddelelseshastigheder osv. På en primært terminalapplikation (bemærk at nogle varianter har en wxPython GUI-indgang). Når det er sagt, bruger Cygwin ikke ideel og ville elske at finde en løsning ved hjælp af kun sys-modulet. [5]


Jeg har prøvet følgende: (Bemærk at jeg havde forventet, at de skulle svigte, men håbede jeg ville have det galt)

Forsøg 1: Opdaterer strengen, men det er alt på 1 linje


sys.stdout.write("
")
sys.stdout.write("This is a multi-line screen print test") 
sys.stdout.write("Line 1") 
sys.stdout.write("Line 2") 
sys.stdout.flush()  


Forsøg 2: Opdaterer ikke, men udskriver alle linjerne


sys.stdout.write("
")
sys.stdout.write("This is a multi-line screen print test
") 
sys.stdout.write("Line 1 
") 
sys.stdout.write("Line 2
") 
sys.stdout.flush()

Bedste reference


Det nærmeste, jeg kunne finde for forbandelser (som er blevet opdateret i de sidste 10 år) var Windows Console Driver. I stedet for at bruge denne fremgangsmåde gik jeg på, at det var en mindre elegant metode. [6]


import os
import time

while(1):
    time.sleep(.05)
    os.system('cls')
    print "This is a multi-line screen print test"
    print "Line 1" 
    print "Line 2" 

Andre referencer 1


Du skal muligvis bruge Windows Console API. For eksempel SetConsoleCursorPosition. Andre mennesker synes at have implementeret Python-moduler til at understøtte denne API: 1, 2 [7] [8] [9]