1

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

1 回答 1

0

如果要Loading...在 API 调用完成后删除,只需使用转义码将光标移动到该行的开头即可ESC[1000D。请注意,您必须sys.stdout.write()在此处使用而不是 print,因为我们希望这一切都发生在同一行。

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...最后留下)

于 2018-05-30T08:05:56.100 回答