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

代码在IDLE中运行正常,直接打开文件却无法工作求助

问题解决方案

核心问题分析

  • 双击运行脚本时,os.getcwd()返回的当前工作目录不一定是脚本所在的目录,导致找不到sound.wav文件,playsound抛出异常后脚本直接终止,窗口随之关闭。
  • 没有异常捕获机制,报错时无法查看具体问题,窗口直接闪退。

修复步骤

1. 修正文件路径获取方式

放弃使用os.getcwd(),改为获取脚本自身所在的目录,这样无论从哪个路径启动脚本,都能正确定位音频文件:

import keyboard
from playsound import playsound
import os
import traceback

# 获取脚本所在的绝对目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 用os.path.join拼接路径,避免因系统分隔符不同出错
sound_path = os.path.join(script_dir, "sound.wav")

while True:     
    try:
        if keyboard.read_key() == "q":
            playsound(sound_path)
    except Exception as e:
        # 打印错误详情,方便排查问题
        print(f"错误信息:{e}")
        print(traceback.format_exc())
        # 等待输入,防止窗口直接关闭
        input("按回车键继续...")
        break

2. 添加异常捕获与窗口停留

  • 用try-except包裹核心逻辑,捕获并打印所有异常,能直观看到问题根源(比如文件缺失、音频格式不支持等)。
  • 报错后通过input()让窗口停留,你可以看完错误信息再手动关闭。

3. 可选优化:添加退出机制

如果需要主动终止程序,可以在循环里增加退出键判断:

while True:     
    try:
        key = keyboard.read_key()
        if key == "q":
            playsound(sound_path)
        elif key == "esc":
            print("程序已退出")
            break
    except Exception as e:
        print(f"错误信息:{e}")
        print(traceback.format_exc())
        input("按回车键继续...")
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:12:28