Терминал динамической печати URL-адресов в Python - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть файл, содержащий URL-адреса (google.com, microsoft.com и т. Д.).Я хочу напечатать один URL, а затем очистить предыдущую строку от него.снова напишите другой URL выше.Пример кода ниже:

import sys
with open('url.txt') as u:
    for line in u:
          line=line.strip()
          print(line, end="\r")
          #also tried
          sys.stdout.write("\r{0}".format(line))
          sys.stdout.flush()

Код выше не удаляет все предыдущие символы.Пример: «google.com» после «microsoft.com» будет печататься как «google.com.com».Кто-нибудь может подсказать, как полностью удалить предыдущую строку?

1 Ответ

0 голосов
/ 22 сентября 2019

Попробуйте:

import sys
import time
with open('url.txt') as u:
  lastline = ""
  for count, line in enumerate(u.readlines()):
    if count != 0:  # do not delay on first item outputted
      time.sleep(4)  # 4 sec delay so user can read before next text appears
    line = str(line).strip("\n")
    print(' ' * (len(lastline) + 1), end='\r')  # clear last line
    print(line, end='\r')
    lastline = line

Протестировано в Windows 10

Хотя курсор будет мигать в начале.Чтобы это исправить, вы можете установить модуль курсора по pip install cursor, а затем использовать этот слегка измененный код:

import sys
import time
import cursor
with open('url.txt') as u:
  lastline = ""
  for count, line in enumerate(u.readlines()):
    if count != 0:  # do not delay on first item outputted
      time.sleep(4)  # 4 sec delay so user can read before next text appears
    line = str(line).strip("\n")
    print(' ' * (len(lastline) + 1), end='\r')  # clear last line
    print(line, end='\r')
    lastline = line
    cursor.hide()
cursor.show()
...