Python调用datetime相关date函数时pyttsx3无返回程序挂死问题求助
问题根因
pyttsx3的speak()方法仅支持传入字符串类型参数,你的代码直接将int类型的年、月、日数值传入该方法,macOS平台的NSSpeechSynthesizer底层驱动无法解析数值类型,触发Objective-C的 selector 识别异常,最终导致程序卡死。- 你的
date()函数内部定义了和函数同名的局部变量date,属于不规范的命名写法,后续容易引发命名冲突问题。
修复方案
你只需要将传入speak()的数值转为字符串,同时修改冲突的局部变量名即可正常运行,修复后代码如下:
import pyttsx3 import datetime engine = pyttsx3.init() def speak(audio): engine.say(audio) engine.runAndWait() def time(): Time = datetime.datetime.now().strftime("%I:%M:%S") speak(Time) def date(): year = str(datetime.datetime.now().year) month = str(datetime.datetime.now().month) day = str(datetime.datetime.now().day) speak(day) speak(month) speak(year) date()
优化建议
你也可以直接用strftime方法一次性格式化日期字符串,输出的内容更符合日常朗读习惯,写法也更简洁:
def date(): date_content = datetime.datetime.now().strftime("%Y年%m月%d日") speak(date_content)
内容的提问来源于stack exchange,提问作者May Mammaz
相关产品推荐
相关产品推荐

