代码在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
相关产品推荐
相关产品推荐

