Pisanje izhoda konzole na isto mesto je lahko uporabna tehnika za razvijalce pri delu z aplikacijami Python, zlasti pri razvoju uporabniških vmesnikov v ukazni vrstici, ustvarjanju indikatorjev napredka in posodabljanju podatkov konzole v realnem času. Ta članek bo obravnaval rešitev za prepisovanje izhoda konzole, razložil kodo korak za korakom in se poglobil v posebne knjižnice in vgrajene funkcije Python, ki omogočajo to nalogo.
Da bi to dosegli, lahko uporabimo znamenito knjižnico Python "curses", ki je posebej zasnovana za ustvarjanje terminalskih aplikacij, ki so močno odvisne od uporabe besedilnih uporabniških vmesnikov. Zaradi enostavnosti in lažjega razumevanja pa bomo za prepis izhodov konzole uporabili Pythonova vgrajena modula »sys« in »time«.
Prepisovanje izhoda konzole v Pythonu
Glavna ideja je uporaba sys.stdout.write() funkcijo, ki nam omogoča tiskanje v isti vrstici, skupaj z vrnitev kočije znak (»r«), da se vrnete na začetek vrstice, kar nam dejansko omogoča, da prepišemo izhod.
Tu je primer prepisovanja izhoda konzole s Pythonom:
import time import sys for i in range(10): sys.stdout.write("rStep: %d" % i) sys.stdout.flush() time.sleep(1)
Postopna razlaga kode
1. Najprej uvozite potrebne module:
import time import sys
O čas modul bo uporabljen za dodajanje zamika med iteracijami in sys modul bo uporabljen za pisanje izhoda v konzolo.
2. Nato ustvarite zanko za ponavljanje po obsegu števil in simulirajte števec napredka:
for i in range(10):
Ta zanka se ponavlja od 0 do 9 in se dejansko izvede desetkrat.
3. Znotraj zanke uporabite sys.stdout.write() funkcija za tiskanje trenutne številke ponovitve skupaj z oznako:
sys.stdout.write("rStep: %d" % i)
Znak »r« je povratni znak, ki deluje kot ponastavitev na začetek vrstice in omogoča, da naslednji izhod prepiše trenutnega.
4. Zagotovite uporabo sys.stdout.flush() po pisanju v konzolo:
sys.stdout.flush()
Funkcija flush() počisti notranji medpomnilnik in zagotovi, da se izhod prikaže takoj.
5. Na koncu dodajte zakasnitev z uporabo time.sleep() funkcija:
time.sleep(1)
Ta premor bo trajal eno sekundo, kar bo olajšalo opazovanje prepisovanja izhoda.
Zdaj lahko vidite, kako se izhod konzole prepisuje ob vsaki ponovitvi.
Pregled knjižnice »sys«.
O sys knjižnica je zmogljiv vgrajen modul Python, ki omogoča dostop do notranjosti tolmača in različnih parametrov, specifičnih za sistem. V tem članku smo se osredotočili na uporabo sys.stdout.write() in sys.stdout.flush() funkcije za prepis izhoda konzole. Vendar pa knjižnica »sys« ponuja številne druge funkcije, kot so argumenti ukazne vrstice, vrstni red bajtov, izjeme in vnaprej določene poti.
Pregled knjižnice »time«.
O čas knjižnica je še en vgrajen modul Python, ki ponuja različne funkcije, povezane s časovno manipulacijo in obdelavo. V našem primeru smo uporabili time.sleep() funkcijo za ustvarjanje zamika med ponovitvami. Knjižnica »čas« ponuja tudi druga orodja za merjenje časa izvajanja, pretvorbo med formati časa in pridobivanje trenutnega časa. Ta modul je bistvenega pomena za razvijalce, ki delajo s funkcijami, povezanimi s časom, ali razporejanjem opravil v aplikacijah Python.