下面是退出语句的代码
if "shutdown" in query:
speak("Ok, See you")
sys.exit(0)以下是我所拥有的模块:
from googlesearch import search
import pyttsx3
import datetime
import wikipedia
import pywhatkit
import webbrowser
import speech_recognition
import requests
from bs4 import BeautifulSoup
import sys执行该命令时,将得到以下错误代码
Exception ignored on calling ctypes callback function: <function catch_errors.<locals>.call_with_this at 0x0000020FBDAE5C60>
Traceback (most recent call last):
File "C:\Users\adith.LAPTOP-K9TNBR9N\AppData\Local\Programs\Python\Python310\lib\site-packages\comtypes\_comobject.py", line 97, in call_with_this
File "C:\Users\adith.LAPTOP-K9TNBR9N\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 1505, in error
File "C:\Users\adith.LAPTOP-K9TNBR9N\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 1734, in isEnabledFor
TypeError: 'NoneType' object is not callable
Process finished with exit code 1如果你需要更多的信息,请告诉我。我试过做exit() sys.exit() os.exit()。没有工作,我总是得到相同的错误代码,无论我尝试什么。
发布于 2022-03-12 05:05:14
你必须找到一种不同的方法来做这件事。您的回调是从C++代码调用的。该代码捕获所有异常,因为C++代码不知道如何传递异常。sys.exit(0)通过引发异常来工作。C++代码会捕获并忽略该异常,但是sys.exit已经开始关闭,所以当您的代码返回到日志模块时,就没有东西了。
您需要在回调中设置一个标志,即应用程序中的其他代码进行检查,并以这种方式关闭。
后续行动
所以,所有东西都在一个大的while True循环中。你只需要一面旗帜:
running = True
while Running:然后
elif "shutdown" in query:
speak("Ok, See you")
running = False但是,有两个嵌套的while循环使得这个问题更加复杂。我不明白为什么您有嵌套循环而不是一个大循环,我建议您将它重写为有一个循环。
https://stackoverflow.com/questions/71447035
复制相似问题