sys.stdout.write
- хорошее начало, но вам также нужно передать «возврат каретки» '\r'
, чтобы перейти к началу строки. При следующем вызове старые символы будут перезаписаны:
for i in range(10):
sys.stdout.write(str(i)+'\r')
time.sleep(1)
Если новая строка короче предыдущей, вы все равно увидите дополнительные символы предыдущей строки. В качестве исправления вы можете добавить несколько дополнительных пробелов, чтобы перезаписать их.
Основное различие между sys.stdout.write
и print
заключается в том, что print
автоматически добавляет перенос строки (\n
). Вот почему вы видите sys.stdout.write
перед следующей напечатанной строкой.
Запуск этого в интерактивном сеансе Python имеет некоторые странные побочные эффекты, но это нормально, если вы используете его в Python сценарий. Также убедитесь, что между ними нет других команд print()
. Это работает только с текущей строкой, а любое '\n'
создает новую строку.
sys.stdout.write('virus_prevention.fix.virus.|attempt_enter\r')
time.sleep(2)
sys.stdout.write('virus_prevention.fix.virus|.attempt_enter\r')
print() # create a linebreak at the end