在 Python 2.7 中加载消息?

Loading message in Python 2.7?

我正在 Python 2.7 中使用模块 'wikipedia'、'wolframalpha' 和 'pyttsx3' 制作个人助理。我这样做是为了让用户可以提出问题,然后计算机将搜索维基百科和 Wolfram 并使用 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")

如果要在 API 调用完成后删除 Loading...,只需使用转义码 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...)