在Spyder中正确终止脚本而不显示错误消息

时间:2017-07-13 07:14:22

标签: python exit spyder

对于我在python中的项目,我正在接受两个输入,比如a& b为整数值。现在代码如下:

import sys
a = input("enter a")
b = input("enter b")
if a < b:
    print(" enter a greater than b and try again")
    sys.exit()

# Rest of the code is here

现在这很好用。但是要创建一个额外的声明

An exception has occurred, use %tb to see the full traceback.

SystemExit

我不希望这样,因为用户可能认为代码的功能不正确。那么有没有任何方式可以显示这个语句或任何其他函数退出代码而不打印除了我写的行以外的任何东西?

注意我尝试过exit(),但它会继续执行它下面的代码。另外,我注意到this related question,但是那里列出的方法在这种情况下不起作用。

编辑:我正在添加更多信息。我需要将此退出函数放入用户定义的函数中,以便每次用户输入一些错误的数据时,代码将调用此用户定义的函数并退出代码。 如果我尝试将我的代码放在if else语句中,如

def end():
    print("incorrect input try again")
    os.exit()

a = input("enter data")
if a < 10:
    end()
b = input ("enter data")
if b < 20:
   end()
# more code here

我不知道为什么但是我甚至无法在最后定义这个用户定义的函数,因为它引发了未定义函数end()的错误。我在Windows上使用带有Spyder的Python。

2 个答案:

答案 0 :(得分:1)

您可以使用os._exit()

a = int(input("enter a"))
b = int(input("enter b"))
if a < b:
    print(" enter a greater than b and try again")
    os._exit(0)

答案 1 :(得分:1)

这似乎工作正常:

import sys

def end():
    print("incorrect input try again")
    sys.exit(1)

a = input("enter data")
if int(a) < 10:
    end()
b = input ("enter data")
if int(b) < 20:
    end()

我使用了sys.exit并修复了你的条件以避免将字符串与整数进行比较。我在输出中看不到任何其他消息。只有这个:

>py -3 test2.py
enter data1
incorrect input try again
>

请注意python docs中的这个qoute:

  

退出的标准方法是sys.exit(n)。 [os] _exit()通常只应该   在fork()之后用在子进程中。

它也适用于repl

相关问题