Opgelost: console-uitvoer op dezelfde plaats schrijven

Het schrijven van console-uitvoer op dezelfde plek kan een nuttige techniek zijn voor ontwikkelaars bij het werken met Python-applicaties, vooral bij het ontwikkelen van gebruikersinterfaces op de opdrachtregel, het maken van voortgangsindicatoren en het in realtime bijwerken van consolegegevens. Dit artikel bespreekt een oplossing voor het overschrijven van console-uitvoer, legt de code stap voor stap uit en duikt in specifieke bibliotheken en ingebouwde Python-functies die deze taak mogelijk maken.

Om dit te bereiken kunnen we de beroemde Python-bibliotheek “curses” gebruiken, die specifiek is ontworpen voor het maken van terminalgebaseerde applicaties die sterk afhankelijk zijn van het gebruik van op tekst gebaseerde gebruikersinterfaces. Met het oog op eenvoud en begrijpelijkheid zullen we echter de ingebouwde “sys”- en “time”-modules van Python gebruiken om console-uitvoer te overschrijven.

Console-uitvoer overschrijven in Python

Het belangrijkste idee is om de sys.stdout.write() functie, waarmee we op dezelfde regel kunnen afdrukken, samen met de vervoer retour teken (“r”) om terug te keren naar het begin van de regel, waardoor we de uitvoer effectief kunnen overschrijven.

Hier is een voorbeeld van het overschrijven van console-uitvoer met Python:

import time
import sys

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

Stapsgewijze uitleg van de code

1. Importeer eerst de benodigde modules:

   import time
   import sys
   

De niet de tijd of module zal worden gebruikt om vertraging tussen iteraties toe te voegen, en de sys module zal worden gebruikt om uitvoer naar de console te schrijven.

2. Maak vervolgens een lus die een reeks getallen bestrijkt en zo een voortgangsteller simuleert:

   for i in range(10):
   

Deze lus herhaalt zich van 0 tot 9 en wordt effectief tien keer uitgevoerd.

3. Gebruik binnen de lus de sys.stdout.write() functie om het huidige iteratienummer samen met een label af te drukken:

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

Het “r”-teken is de harde return die fungeert als een reset naar het begin van de regel, waardoor de volgende uitvoer de huidige kan overschrijven.

4. Zorg ervoor dat u het gebruikt sys.stdout.flush() na het schrijven naar de console:

   sys.stdout.flush()
   

De functie flush() wist de interne buffer en zorgt ervoor dat de uitvoer onmiddellijk wordt weergegeven.

5. Voeg ten slotte een vertraging toe met behulp van de tijd.slaap() functie:

   time.sleep(1)
   

Deze pauze duurt één seconde, waardoor het gemakkelijker wordt om te zien hoe de uitvoer wordt overschreven.

Nu kunt u zien hoe de console-uitvoer bij elke iteratie wordt overschreven.

Overzicht van de “sys”-bibliotheek

De sys bibliotheek is een krachtige ingebouwde Python-module die toegang biedt tot de interne onderdelen van de tolk en verschillende systeemspecifieke parameters. In dit artikel hebben we ons geconcentreerd op het gebruik sys.stdout.write() en sys.stdout.flush() functies om console-uitvoer te overschrijven. De “sys”-bibliotheek biedt echter nog veel meer functionaliteiten, zoals opdrachtregelargumenten, bytevolgorde, uitzonderingen en vooraf gedefinieerde paden.

Overzicht van de “tijd”-bibliotheek

De niet de tijd of bibliotheek is een andere ingebouwde Python-module die een verscheidenheid aan functies biedt met betrekking tot tijdmanipulatie en -verwerking. In ons voorbeeld hebben we gebruik gemaakt van de tijd.slaap() functie om een ​​vertraging tussen iteraties te creëren. De “time”-bibliotheek biedt ook andere hulpmiddelen voor het meten van de uitvoeringstijd, het converteren tussen tijdformaten en het verkrijgen van de huidige tijd. Deze module is essentieel voor ontwikkelaars die werken met tijdgerelateerde functies of het plannen van taken in Python-applicaties.

Gerelateerde berichten:

Laat een bericht achter