Løst: skriv konsoludgang på samme sted

At skrive konsoloutput på samme sted kan være en nyttig teknik for udviklere, når de arbejder med Python-applikationer, især når de udvikler brugergrænseflader på kommandolinjen, opretter fremskridtsindikatorer og opdaterer konsoldata i realtid. Denne artikel vil diskutere en løsning til at overskrive konsoloutput, forklare koden trin-for-trin og dykke ned i specifikke biblioteker og indbyggede Python-funktioner, der gør denne opgave mulig.

For at opnå dette kan vi bruge det berømte Python-bibliotek "curses", som er specielt designet til at skabe terminalbaserede applikationer, der i høj grad afhænger af brugen af ​​tekstbaserede brugergrænseflader. Men af ​​hensyn til enkelhed og nem forståelse vil vi bruge Pythons indbyggede "sys" og "time" moduler til at overskrive konsoludgange.

Overskrivning af konsoloutput i Python

Hovedideen er at bruge sys.stdout.write() funktion, som giver os mulighed for at printe i samme linje, sammen med vogn retur karakter ("r") for at vende tilbage til begyndelsen af ​​linjen, hvilket effektivt giver os mulighed for at overskrive outputtet.

Her er et eksempel på overskrivning af konsoloutput ved hjælp af Python:

import time
import sys

for i in range(10):
    sys.stdout.write("rStep: %d" % i)
    sys.stdout.flush()
    time.sleep(1)

Trin-for-trin forklaring af koden

1. Importer først de nødvendige moduler:

   import time
   import sys
   

tid modul vil blive brugt til at tilføje forsinkelse mellem iterationer og sys modul vil blive brugt til at skrive output til konsollen.

2. Opret derefter en løkke til at iterere over en række tal og simulerer en fremskridtstæller:

   for i in range(10):
   

Denne sløjfe gentager sig fra 0 til 9 og kører effektivt ti gange.

3. Inde i løkken skal du bruge sys.stdout.write() funktion til at udskrive det aktuelle iterationsnummer sammen med en etiket:

   sys.stdout.write("rStep: %d" % i)
   

Tegnet "r" er vognretur, der fungerer som en nulstilling til begyndelsen af ​​linjen, hvilket gør det muligt for det næste output at overskrive det aktuelle.

4. Sørg for at bruge sys.stdout.flush() efter at have skrevet til konsollen:

   sys.stdout.flush()
   

Flush()-funktionen rydder den interne buffer og sikrer, at outputtet vises med det samme.

5. Tilføj endelig en forsinkelse ved hjælp af time.sleep() fungere:

   time.sleep(1)
   

Denne pause vil vare i et sekund, hvilket gør det lettere at observere, at outputtet bliver overskrevet.

Nu kan du se, hvordan konsoloutputtet bliver overskrevet ved hver iteration.

Oversigt over "sys" bibliotek

sys library er et kraftfuldt indbygget Python-modul, der giver adgang til tolkens interne elementer og forskellige systemspecifikke parametre. I denne artikel fokuserede vi på at bruge sys.stdout.write() og sys.stdout.flush() funktioner til at overskrive konsoludgang. Men "sys"-biblioteket tilbyder mange andre funktioner, såsom kommandolinjeargumenter, byteordre, undtagelser og foruddefinerede stier.

Oversigt over "tidsbiblioteket".

tid bibliotek er et andet indbygget Python-modul, der tilbyder en række funktioner relateret til tidsmanipulation og -behandling. I vores eksempel brugte vi time.sleep() funktion til at skabe en forsinkelse mellem iterationer. "Time"-biblioteket giver også andre værktøjer til måling af udførelsestid, konvertering mellem tidsformater og opnåelse af det aktuelle tidspunkt. Dette modul er vigtigt for udviklere, der arbejder med tidsrelaterede funktioner eller planlægning af opgaver i Python-applikationer.

Relaterede indlæg:

Efterlad en kommentar