首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用退出代码终止python脚本,但不退出,而是提供错误代码

使用退出代码终止python脚本,但不退出,而是提供错误代码
EN

Stack Overflow用户
提问于 2022-03-12 04:40:25
回答 1查看 395关注 0票数 0

下面是退出语句的代码

代码语言:javascript
复制
            if "shutdown" in query:
            speak("Ok, See you")
            sys.exit(0)

以下是我所拥有的模块:

代码语言:javascript
复制
    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

执行该命令时,将得到以下错误代码

代码语言:javascript
复制
    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()。没有工作,我总是得到相同的错误代码,无论我尝试什么。

EN

回答 1

Stack Overflow用户

发布于 2022-03-12 05:05:14

你必须找到一种不同的方法来做这件事。您的回调是从C++代码调用的。该代码捕获所有异常,因为C++代码不知道如何传递异常。sys.exit(0)通过引发异常来工作。C++代码会捕获并忽略该异常,但是sys.exit已经开始关闭,所以当您的代码返回到日志模块时,就没有东西了。

您需要在回调中设置一个标志,即应用程序中的其他代码进行检查,并以这种方式关闭。

后续行动

所以,所有东西都在一个大的while True循环中。你只需要一面旗帜:

代码语言:javascript
复制
    running = True
    while Running:

然后

代码语言:javascript
复制
            elif "shutdown" in query:
                speak("Ok, See you")
                running = False

但是,有两个嵌套的while循环使得这个问题更加复杂。我不明白为什么您有嵌套循环而不是一个大循环,我建议您将它重写为有一个循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71447035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档