Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实际上如何退出python脚本?_Python_Exit - Fatal编程技术网

实际上如何退出python脚本?

实际上如何退出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

这些都不是杀戮-9或任何相近的东西。答案是什么

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()))