Å 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.