Писането на конзолен изход на едно и също място може да бъде полезна техника за разработчиците, когато работят с приложения на Python, особено когато разработват потребителски интерфейси в командния ред, създават индикатори за напредък и актуализират данните на конзолата в реално време. Тази статия ще обсъди решение за презаписване на изхода на конзолата, ще обясни кода стъпка по стъпка и ще се потопи в конкретни библиотеки и вградени функции на Python, които правят тази задача възможна.
За да постигнем това, можем да използваме известната библиотека на Python „curses“, която е специално проектирана за създаване на терминални приложения, които силно зависят от използването на текстови потребителски интерфейси. Въпреки това, за целите на простотата и лесното разбиране, ние ще използваме вградените модули „sys“ и „time“ на Python, за да презапишем изходите на конзолата.
Презаписване на конзолния изход в Python
Основната идея е да използвате sys.stdout.write() функция, която ни позволява да печатаме в същия ред, заедно с връщане на карета знак („r“), за да се върнете в началото на реда, което ефективно ни позволява да презапишем изхода.
Ето пример за презаписване на конзолния изход с помощта на Python:
import time import sys for i in range(10): sys.stdout.write("rStep: %d" % i) sys.stdout.flush() time.sleep(1)
Стъпка по стъпка Обяснение на кода
1. Първо импортирайте необходимите модули:
import time import sys
- път модулът ще се използва за добавяне на забавяне между итерациите и сис ще се използва за запис на изход към конзолата.
2. След това създайте цикъл за итерация в диапазон от числа, симулирайки брояч на напредъка:
for i in range(10):
Този цикъл се повтаря от 0 до 9, ефективно изпълнявайки се десет пъти.
3. Вътре в цикъла използвайте sys.stdout.write() функция за отпечатване на текущия номер на итерация заедно с етикет:
sys.stdout.write("rStep: %d" % i)
Символът “r” е връщане на каретка, което действа като нулиране в началото на реда, което позволява на следващия изход да презапише текущия.
4. Осигурете използване sys.stdout.flush() след писане в конзолата:
sys.stdout.flush()
Функцията flush() изчиства вътрешния буфер и гарантира, че изходът се показва незабавно.
5. Накрая добавете забавяне с помощта на time.sleep() функция:
time.sleep(1)
Тази пауза ще продължи една секунда, което улеснява наблюдението на презаписването на изхода.
Сега можете да видите как изходът на конзолата се презаписва при всяка итерация.
Преглед на библиотеката “sys”.
- сис библиотеката е мощен вграден модул на Python, който осигурява достъп до вътрешността на интерпретатора и различни специфични за системата параметри. В тази статия се фокусирахме върху използването sys.stdout.write() намлява sys.stdout.flush() функции за презаписване на конзолния изход. Библиотеката „sys“ обаче предлага много други функционалности, като аргументи на командния ред, ред на байтове, изключения и предварително дефинирани пътища.
Преглед на библиотеката „време“.
- път библиотека е друг вграден модул на Python, който предлага разнообразие от функции, свързани с манипулиране и обработка на времето. В нашия пример ние използвахме time.sleep() функция за създаване на забавяне между итерациите. Библиотеката „време“ предоставя и други инструменти за измерване на времето за изпълнение, конвертиране между формати за време и получаване на текущото време. Този модул е от съществено значение за разработчиците, работещи с функции, свързани с времето, или планиране на задачи в приложения на Python.