Atrisināts: ierakstiet konsoles izvadi tajā pašā vietā

Pēdējā atjaunošana: 09/11/2023

Konsoles izvades rakstīšana tajā pašā vietā var būt noderīgs paņēmiens izstrādātājiem, strādājot ar Python lietojumprogrammām, īpaši, veidojot lietotāja saskarnes komandrindā, veidojot progresa indikatorus un atjauninot konsoles datus reāllaikā. Šajā rakstā tiks apspriests risinājums konsoles izvades pārrakstīšanai, soli pa solim izskaidrots kods un izpētītas konkrētas bibliotēkas un iebūvētās Python funkcijas, kas padara šo uzdevumu iespējamu.

Lai to panāktu, mēs varam izmantot slaveno Python bibliotēku “lāsti”, kas ir īpaši izstrādāta uz termināļiem balstītu lietojumprogrammu izveidei, kas lielā mērā ir atkarīga no teksta lietotāja interfeisu izmantošanas. Tomēr vienkāršības un saprotamības labad mēs izmantosim Python iebūvētos “sys” un “time” moduļus, lai pārrakstītu konsoles izejas.

Konsoles izvades pārrakstīšana programmā Python

Galvenā ideja ir izmantot sys.stdout.write() funkcija, kas ļauj drukāt vienā rindā kopā ar rakstatgriezes rakstzīmi (“r”), lai atgrieztos rindas sākumā, ļaujot mums pārrakstīt izvadi.

Šeit ir piemērs konsoles izvades pārrakstīšanai, izmantojot Python:

import time
import sys

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

Kodeksa soli pa solim skaidrojums

1. Vispirms importējiet nepieciešamos moduļus:

   import time
   import sys
   

The laiks modulis tiks izmantots, lai pievienotu aizkavi starp iterācijām un sis modulis tiks izmantots, lai ierakstītu izvadi konsolē.

2. Pēc tam izveidojiet cilpu, lai atkārtotu skaitļu diapazonu, imitējot progresa skaitītāju.

   for i in range(10):
   

Šī cilpa atkārtojas no 0 līdz 9, efektīvi palaižot desmit reizes.

3. Cilpas iekšpusē izmantojiet sys.stdout.write() funkcija, lai izdrukātu pašreizējo iterācijas numuru kopā ar etiķeti:

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

Rakstzīme “r” ir karieta atgriešana, kas darbojas kā atiestatīšana uz rindas sākumu, ļaujot nākamajai izvadei pārrakstīt pašreizējo.

4. Pārliecinieties, ka lietojat sys.stdout.flush() pēc rakstīšanas konsolei:

   sys.stdout.flush()
   

Funkcija flush() notīra iekšējo buferi un nodrošina tūlītēju izvades parādīšanu.

5. Visbeidzot pievienojiet aizkavi, izmantojot laiks.miegs() funkcija:

   time.sleep(1)
   

Šī pauze ilgs vienu sekundi, padarot vieglāk novērot izvades pārrakstīšanu.

Tagad jūs varat redzēt, kā konsoles izvade tiek pārrakstīta katrā iterācijā.

Pārskats par “sys” bibliotēku

The sis bibliotēka ir jaudīgs iebūvēts Python modulis, kas nodrošina piekļuvi tulka iekšējiem elementiem un dažādiem sistēmai raksturīgiem parametriem. Šajā rakstā mēs koncentrējāmies uz izmantošanu sys.stdout.write() un sys.stdout.flush() funkcijas, lai pārrakstītu konsoles izvadi. Tomēr “sys” bibliotēka piedāvā daudzas citas funkcijas, piemēram, komandrindas argumentus, baitu secību, izņēmumus un iepriekš definētus ceļus.

“Laika” bibliotēkas pārskats

The laiks bibliotēka ir vēl viens iebūvēts Python modulis, kas piedāvā dažādas ar laika manipulācijām un apstrādi saistītas funkcijas. Mūsu piemērā mēs izmantojām laiks.miegs() funkcija, lai izveidotu aizkavi starp iterācijām. “Laika” bibliotēka nodrošina arī citus rīkus izpildes laika mērīšanai, konvertēšanai starp laika formātiem un pašreizējā laika iegūšanai. Šis modulis ir būtisks izstrādātājiem, kas Python lietojumprogrammās strādā ar ar laiku saistītām funkcijām vai plānošanas uzdevumiem.

Related posts: