实际上如何退出python脚本?
这些都不是杀戮-9或任何相近的东西。答案是什么实际上如何退出python脚本?,python,exit,Python,Exit,这些都不是杀戮-9或任何相近的东西。答案是什么 import sys import os try: exit() sys.exit() os._exit() quit() except: print("THIS SHOULD NOT RUN") Python语言的荒谬之处在于,如果有人试图捕获中止的包装或类似的东西,以防止它死亡 这不是我所知道的任何其他语言中存在的东西。中止是一种紧急安全措施。在脚本中尝试CT
import sys
import os
try:
exit()
sys.exit()
os._exit()
quit()
except:
print("THIS SHOULD NOT RUN")
Python语言的荒谬之处在于,如果有人试图捕获中止的包装或类似的东西,以防止它死亡
这不是我所知道的任何其他语言中存在的东西。中止是一种紧急安全措施。在脚本中尝试CTRL+C时,应执行此操作。继续@Mike Scotty已经解释过的内容: 选择一个:sys.exit sys.exit引发异常,即SystemExit。这就是为什么你在这个街区降落 例如: 输出: 输出:
我不喜欢Python处理这个问题的方式,但我找到了一个解决方案,它实际上是kill-9: 免责声明:很遗憾,您必须以root用户身份启动并运行该进程
os.system("sudo kill -9 " + str(os.getpid()))
这不是我想要的答案。而且CTRL+D更好。嗯,通常退出对我来说是有效的,但我还是会对你的问题进行投票,希望有人能更好地回答你的问题编辑:CTRL+C在过去的10年中一直伴随着我,我一直在使用它,这只是我猜的事情之一。是的,如果一个脚本在没有用户输入的情况下运行,就像在服务器上一样,并且需要摆脱循环,那该怎么办?很明显,我在寻找一个程序化的答案。然后通常我只是按住CTRL+Z,X,C,D直到它停止。请阅读:如果你阅读这些方法的文档,你会看到它们引发异常。这是故意的,所以你有机会真正清理你的东西,即使程序想退出。那么,为什么您希望程序在不尊重异常块的情况下退出呢?由您决定如何处理个别异常。因此,编写“中止”方法作为紧急安全措施的人员应该知道同一段代码的任何可能用法,而这是不可能的?这是一个绝不能将python用于任何运行机器的东西的很好的理由。如果一个人编写了一个abort方法,那么无论是谁调用它或调用可能调用它的代码,都要对当时发生的行为负责。如果一个叫它的人盲目地抓住了所有的例外,那就是那个人的疏忽。Python允许您处理单个异常。如果当前处于DB事务中,需要撤消某些DB锁定,该怎么办?如果您刚刚退出该程序,数据库可能永远处于锁定状态。通过异常处理,调用方有机会撤消锁定,然后优雅地退出。我不喜欢这样,但这回答了我的问题。在Linux/Unix上,您不需要是root用户就可以终止自己的进程。所以你不需要sudo。您不需要os.system以其巨大的开销发送信号,请参阅os.kill。
<class 'SystemExit'>
import sys
try:
sys.exit() # this always raises SystemExit
except SystemExit:
print("sys.exit() worked as expected")
except:
print("Something went horribly wrong") # some other exception got raised
sys.exit() worked as expected
os.system("sudo kill -9 " + str(os.getpid()))