Я пытаюсь напечатать несколько строк при их обновлении, например:

Attempts1: 10
Attempts2: 10

Я пробовал это:

from time import sleep
import subprocess

while True:
  for number in range(100):
    print("Attempts1: {}".format(number))
    print("Attempts2: {}".format(number))
    sleep(0.1)
    subprocess.call("clear")

Но текст продолжает мигать, и это не то, что я хочу.

Итак, я попробовал это:

from time import sleep

while True:
  for number in range(100):
    print("Attempts1: {}".format(number), end='\r', flush=True)
    print("Attempts2: {}".format(number), end='\r', flush=True)
    sleep(0.1)

И получите вот что:

Attempts1:1
Attempts2:1
Attempts1:2
Attempts2:2

И так далее

0
soliify 10 Апр 2020 в 03:26
Текст продолжает мигать, потому что вы очищаете экран 10 раз в секунду. Если вы не хотите, чтобы он мигал, используйте символы управления курсором, чтобы перезаписать текст вместо перезаписи всего экрана. См. процитированный дубликат для отправной точки.
 – 
Prune
10 Апр 2020 в 03:37
Я уже использовал указанный дубликат, и он работает, но я пытаюсь сделать это с несколькими строками, а не с одной.
 – 
soliify
10 Апр 2020 в 03:46
Вы должны расширить то, что показывает дубликат, а также использовать символы вертикального перемещения курсора.
 – 
Prune
10 Апр 2020 в 06:24

1 ответ

Ваша первая попытка сработает, если вы измените порядок

import os
while True:
    for number in range(100):
        os.system("clear")

        print("Attempts1: {}".format(number))
        print("Attempts2: {}".format(number))
        sleep(0.1)

Надеюсь, это поможет.

0
Nivardo Albuquerque 10 Апр 2020 в 03:43
Он работает, но поскольку он обновляется каждые 100 мс, экран мигает очень быстро.
 – 
soliify
10 Апр 2020 в 03:50