Løst: skriv konsollutgang på samme sted

Å skrive konsollutdata på samme sted kan være en nyttig teknikk for utviklere når de jobber med Python-applikasjoner, spesielt når man utvikler brukergrensesnitt på kommandolinjen, lager fremdriftsindikatorer og oppdaterer konsolldata i sanntid. Denne artikkelen vil diskutere en løsning for å overskrive konsollutdata, forklare koden trinn for trinn, og dykke inn i spesifikke biblioteker og innebygde Python-funksjoner som gjør denne oppgaven mulig.

For å oppnå dette kan vi bruke det berømte Python-biblioteket "curses" som er spesielt designet for å lage terminalbaserte applikasjoner som er sterkt avhengig av bruken av tekstbaserte brukergrensesnitt. For enkelhets skyld og lette å forstå, vil vi imidlertid bruke Pythons innebygde "sys" og "time"-moduler for å overskrive konsollutganger.

Overskriver konsollutdata i Python

Hovedideen er å bruke sys.stdout.write() funksjon, som lar oss skrive ut på samme linje, sammen med vognretur tegnet (“r”) for å gå tilbake til begynnelsen av linjen, slik at vi effektivt kan overskrive utdataene.

Her er et eksempel på overskriving av konsollutdata ved å bruke Python:

import time
import sys

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

Trinn-for-trinn forklaring av koden

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

   import time
   import sys
   

De tid modulen vil bli brukt til å legge til forsinkelse mellom iterasjoner og sys modulen vil bli brukt til å skrive utdata til konsollen.

2. Lag deretter en løkke for å iterere over en rekke tall, simuler en fremdriftsteller:

   for i in range(10):
   

Denne løkken går fra 0 til 9, og kjører faktisk ti ganger.

3. Inne i løkken, bruk sys.stdout.write() funksjon for å skrive ut gjeldende iterasjonsnummer sammen med en etikett:

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

"r"-tegnet er vognretur som fungerer som en tilbakestilling til begynnelsen av linjen, slik at neste utgang kan overskrive den gjeldende.

4. Sørg for å bruke sys.stdout.flush () etter å ha skrevet til konsollen:

   sys.stdout.flush()
   

Flush()-funksjonen sletter den interne bufferen og sikrer at utdata vises umiddelbart.

5. Til slutt legger du til en forsinkelse ved å bruke time.sleep() funksjon:

   time.sleep(1)
   

Denne pausen vil vare i ett sekund, noe som gjør det lettere å se at utdataene blir overskrevet.

Nå kan du se hvordan konsollutgangen blir overskrevet på hver iterasjon.

Oversikt over "sys" bibliotek

De sys library er en kraftig innebygd Python-modul som gir tilgang til tolkens interne elementer og ulike systemspesifikke parametere. I denne artikkelen har vi fokusert på å bruke sys.stdout.write() og sys.stdout.flush () funksjoner for å overskrive konsollutgang. Imidlertid tilbyr "sys"-biblioteket mange andre funksjoner, som kommandolinjeargumenter, byteordre, unntak og forhåndsdefinerte stier.

Oversikt over "time" Library

De tid library er en annen innebygd Python-modul som tilbyr en rekke funksjoner relatert til tidsmanipulasjon og prosessering. I vårt eksempel brukte vi time.sleep() funksjon for å lage en forsinkelse mellom iterasjoner. "Time"-biblioteket gir også andre verktøy for å måle utførelsestid, konvertere mellom tidsformater og innhente gjeldende tid. Denne modulen er viktig for utviklere som jobber med tidsrelaterte funksjoner eller planlegger oppgaver i Python-applikasjoner.

Relaterte innlegg:

Legg igjen en kommentar