Загрузка сообщения в Python 2.7? - PullRequest
0 голосов
/ 30 мая 2018

Я делаю личного помощника в Python 2.7, используя модули 'wikipedia', 'wolframalpha' и 'pyttsx3'.Я делаю так, чтобы пользователь мог задать вопрос, и тогда компьютер будет искать в Википедии и Вольфраме и произносить ответ, используя Pyttsx.Все это прекрасно работает, но компьютеру требуется некоторое время, чтобы получить результаты для вопроса, и мне было интересно, можно ли добавить простое сообщение «... загрузка ...», пока это происходит.Я добавил код ниже, и было бы здорово, если бы вы могли ответить.

import wikipedia
import wolframalpha
import pyttsx3;
engine = pyttsx3.init();

while True:
  my_input = raw_input("Question: ")
  try:
    #wolframalpha code here
    app_id = "Q2HXJ5-GYYYX6PYYP"
    client = wolframalpha.Client(app_id)
    res = client.query(my_input)
    answer = next(res.results).text 
    print(answer)
    engine.say(answer);
    engine.runAndWait();


  except:
      try:
        #wikipedia code here
        print(wikipedia.summary(my_input))
      except:
        print("Sorry nothing can be found from your query")

1 Ответ

0 голосов
/ 30 мая 2018

Если вы хотите удалить Loading... после завершения вызова API, вы можете просто переместить курсор в начало этой строки, используя escape-код ESC[1000D.Обратите внимание, что вы должны использовать sys.stdout.write() вместо печати здесь, так как мы хотим, чтобы все это происходило в одной строке.

import sys

// Before API Call
sys.stdout.write("Loading...")
sys.stdout.flush()

// After API Call
sys.stdout.write(u"\u001b[1000D")
print "Done!     "

Обратите внимание на u после строки в двойных кавычках.Это требуется в Python 2.x, поскольку оно включает специальные символы, но может быть опущено в Python 3.

(Кстати, дополнительные пробелы в Done присутствуют толькотак что строка длиннее Loading..., поэтому она полностью заменяет ее, не оставляя ng... в конце)

...