Nalutas: isulat ang output ng console sa parehong lugar

Ang pagsulat ng output ng console sa parehong lugar ay maaaring maging isang kapaki-pakinabang na pamamaraan para sa mga developer kapag nagtatrabaho sa mga application ng Python, lalo na kapag bumubuo ng mga interface ng gumagamit sa command line, lumilikha ng mga tagapagpahiwatig ng pag-unlad, at nag-a-update ng data ng console sa real-time. Tatalakayin ng artikulong ito ang isang solusyon para sa pag-overwrit ng output ng console, ipaliwanag ang code nang sunud-sunod, at sumisid sa mga partikular na library at built-in na Python function na ginagawang posible ang gawaing ito.

Upang makamit ito, maaari naming gamitin ang sikat na Python library na "mga sumpa" na partikular na idinisenyo para sa paglikha ng mga terminal-based na application na lubos na nakadepende sa paggamit ng mga text-based na user interface. Gayunpaman, para sa layunin ng pagiging simple at kadalian ng pag-unawa, gagamitin namin ang built-in na "sys" at "time" na module ng Python upang ma-overwrite ang mga output ng console.

Overwriting Console Output sa Python

Ang pangunahing ideya ay ang paggamit ng sys.stdout.write() function, na nagpapahintulot sa amin na mag-print sa parehong linya, kasama ang pagbabalik ng karwahe character (โ€œrโ€) upang bumalik sa simula ng linya, na epektibong nagbibigay-daan sa amin na i-overwrite ang output.

Narito ang isang halimbawa ng pag-overwrit sa output ng console gamit ang Python:

import time
import sys

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

Hakbang-hakbang na Pagpapaliwanag ng Kodigo

1. Una, i-import ang mga kinakailangang module:

   import time
   import sys
   

Ang oras gagamitin ang module upang magdagdag ng pagkaantala sa pagitan ng mga pag-ulit, at ang sys module ay gagamitin upang isulat ang output sa console.

2. Susunod, lumikha ng isang loop upang umulit sa isang hanay ng mga numero, na ginagaya ang isang progress counter:

   for i in range(10):
   

Ang loop na ito ay umuulit mula 0 hanggang 9, na epektibong tumatakbo nang sampung beses.

3. Sa loob ng loop, gamitin ang sys.stdout.write() function na upang i-print ang kasalukuyang numero ng pag-ulit kasama ng isang label:

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

Ang "r" na character ay ang carriage return na nagsisilbing pag-reset sa simula ng linya, na nagpapahintulot sa susunod na output na ma-overwrite ang kasalukuyang isa.

4. Tiyaking ginagamit sys.stdout.flush() pagkatapos magsulat sa console:

   sys.stdout.flush()
   

Ang flush() function ay nililimas ang panloob na buffer at tinitiyak na ang output ay ipapakita kaagad.

5. Panghuli, magdagdag ng pagkaantala gamit ang time.sleep() pag-andar:

   time.sleep(1)
   

Ang pag-pause na ito ay tatagal ng isang segundo, na ginagawang mas madaling obserbahan ang output na na-overwrite.

Ngayon ay makikita mo kung paano na-overwrite ang output ng console sa bawat pag-ulit.

Pangkalahatang-ideya ng "sys" Library

Ang sys ang library ay isang malakas na built-in na Python module na nagbibigay ng access sa mga internals ng interpreter at iba't ibang mga parameter na partikular sa system. Sa artikulong ito, nakatuon kami sa paggamit sys.stdout.write() at sys.stdout.flush() mga function upang i-overwrite ang output ng console. Gayunpaman, ang library ng "sys" ay nag-aalok ng maraming iba pang mga functionality, tulad ng mga argumento ng command line, byteorder, mga exception, at mga paunang natukoy na path.

Pangkalahatang-ideya ng "oras" na Library

Ang oras Ang library ay isa pang built-in na Python module na nag-aalok ng iba't ibang function na nauugnay sa pagmamanipula at pagproseso ng oras. Sa aming halimbawa, ginamit namin ang time.sleep() function na upang lumikha ng isang pagkaantala sa pagitan ng mga pag-ulit. Nagbibigay din ang library ng "oras" ng iba pang mga tool para sa pagsukat ng oras ng pagpapatupad, pag-convert sa pagitan ng mga format ng oras, at pagkuha ng kasalukuyang oras. Ang module na ito ay mahalaga para sa mga developer na nagtatrabaho sa mga function na nauugnay sa oras o mga gawain sa pag-iiskedyul sa mga application ng Python.

Kaugnay na mga post:

Mag-iwan ng komento