You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7如何为个人助手添加加载提示?

添加动态加载提示到你的Python个人助手

嘿,这个需求太实用了——等待查询结果的时候给用户一个反馈,体验立刻就上来了。我来帮你修改代码实现这个功能,主要思路是利用sys.stdout实时输出加载提示,等结果返回后再覆盖掉它。

修改后的完整代码

import wikipedia
import wolframalpha
import pyttsx3
import sys  # 导入sys模块控制输出

engine = pyttsx3.init()

while True:
    my_input = raw_input("Question: ")
    # 先打印加载提示,不换行
    sys.stdout.write("...loading...")
    sys.stdout.flush()  # 强制刷新输出缓冲区,确保提示立刻显示
    
    try:
        # WolframAlpha查询逻辑
        app_id = "Q2HXJ5-GYYYX6PYYP"
        client = wolframalpha.Client(app_id)
        res = client.query(my_input)
        answer = next(res.results).text
        
        # 回到行首,用结果覆盖加载提示
        sys.stdout.write("\r")  # 光标移到行开头
        print(answer)
        engine.say(answer)
        engine.runAndWait()
        
    except:
        try:
            # Wikipedia查询逻辑
            wiki_result = wikipedia.summary(my_input)
            
            # 同样回到行首覆盖提示
            sys.stdout.write("\r")
            print(wiki_result)
            
        except:
            # 查询失败时也覆盖提示,再打印错误信息
            sys.stdout.write("\r")
            print("Sorry nothing can be found from your query")

关键部分解释

  • sys.stdout.write("...loading..."):用write而不是print,因为print会自动换行,我们需要提示和结果在同一行。
  • sys.stdout.flush():Python默认会缓冲输出,这一步强制立刻显示加载提示,避免用户看不到反馈。
  • sys.stdout.write("\r"):\r是回车符,会把光标移到当前行的开头,这样后续的print内容就会覆盖掉之前的加载提示,看起来像是提示消失了,结果直接显示出来。

这样修改后,用户输入问题后会立刻看到...loading...的提示,等结果出来后提示会被替换成查询结果,完美解决等待时的反馈问题!

内容的提问来源于stack exchange,提问作者user9868018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:04:57