Löst: skriv konsolutgång på samma plats

Senaste uppdateringen: 09/11/2023

Att skriva konsolutdata på samma plats kan vara en användbar teknik för utvecklare när de arbetar med Python-applikationer, särskilt när man utvecklar användargränssnitt på kommandoraden, skapar framstegsindikatorer och uppdaterar konsoldata i realtid. Den här artikeln kommer att diskutera en lösning för att skriva över konsolutdata, förklara koden steg-för-steg och dyka in i specifika bibliotek och inbyggda Python-funktioner som gör denna uppgift möjlig.

För att uppnå detta kan vi använda det berömda Python-biblioteket "förbannelser" som är speciellt designat för att skapa terminalbaserade applikationer som är starkt beroende av användningen av textbaserade användargränssnitt. Men för enkelhetens och förståelsens syfte kommer vi att använda Pythons inbyggda "sys"- och "time"-moduler för att skriva över konsolutgångar.

Skriver över konsolutgång i Python

Huvudtanken är att använda sys.stdout.write() funktion, som gör att vi kan skriva ut på samma rad, tillsammans med vagnretur tecken ("r") för att återgå till början av raden, vilket i praktiken tillåter oss att skriva över utdata.

Här är ett exempel på att skriva över konsolutdata med Python:

import time
import sys

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

Steg-för-steg-förklaring av koden

1. Importera först de nödvändiga modulerna:

   import time
   import sys
   

Ocuco-landskapet tid modulen kommer att användas för att lägga till fördröjning mellan iterationer och sys modulen kommer att användas för att skriva utdata till konsolen.

2. Skapa sedan en loop för att iterera över ett antal siffror, simulera en förloppsräknare:

   for i in range(10):
   

Denna loop itererar från 0 till 9 och körs i praktiken tio gånger.

3. Inuti slingan använder du sys.stdout.write() funktion för att skriva ut det aktuella iterationsnumret tillsammans med en etikett:

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

Tecknet "r" är vagnretur som fungerar som en återställning till början av raden, vilket gör att nästa utgång kan skriva över den nuvarande.

4. Se till att använda sys.stdout.flush() efter att ha skrivit till konsolen:

   sys.stdout.flush()
   

Funktionen flush() rensar den interna bufferten och ser till att utdata visas omedelbart.

5. Lägg slutligen till en fördröjning med hjälp av time.sleep() fungera:

   time.sleep(1)
   

Denna paus varar i en sekund, vilket gör det lättare att observera att utdata skrivs över.

Nu kan du se hur konsolutgången skrivs över vid varje iteration.

Översikt över "sys" bibliotek

Ocuco-landskapet sys library är en kraftfull inbyggd Python-modul som ger tillgång till tolkens interna delar och olika systemspecifika parametrar. I den här artikeln fokuserade vi på att använda sys.stdout.write() och sys.stdout.flush() funktioner för att skriva över konsolutgång. Men "sys"-biblioteket erbjuder många andra funktioner, som kommandoradsargument, byteorder, undantag och fördefinierade sökvägar.

Översikt över "tidsbibliotek".

Ocuco-landskapet tid bibliotek är en annan inbyggd Python-modul som erbjuder en mängd olika funktioner relaterade till tidsmanipulation och bearbetning. I vårt exempel använde vi time.sleep() funktion för att skapa en fördröjning mellan iterationerna. "Time"-biblioteket tillhandahåller också andra verktyg för att mäta exekveringstid, konvertera mellan tidsformat och erhålla aktuell tid. Den här modulen är viktig för utvecklare som arbetar med tidsrelaterade funktioner eller schemalägger uppgifter i Python-applikationer.

Relaterade inlägg:

Lämna en kommentar