我想知道如何退出Python而不对输出进行跟踪转储。
我仍然希望能够返回错误代码,但我不想显示回溯日志。
我希望能够退出使用出口(数字)没有跟踪,但在异常(不是出口)的情况下,我想要跟踪。
我想知道如何退出Python而不对输出进行跟踪转储。
我仍然希望能够返回错误代码,但我不想显示回溯日志。
我希望能够退出使用出口(数字)没有跟踪,但在异常(不是出口)的情况下,我想要跟踪。
当前回答
# Pygame Example
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('IBM Emulator')
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
fontObj = pygame.font.Font('freesansbold.ttf', 32)
textSurfaceObj = fontObj.render('IBM PC Emulator', True, GREEN,BLACK)
textRectObj = textSurfaceObj.get_rect()
textRectObj = (10, 10)
try:
while True: # main loop
DISPLAYSURF.fill(BLACK)
DISPLAYSURF.blit(textSurfaceObj, textRectObj)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
except SystemExit:
pass
其他回答
更好的做法是避免使用sys.exit(),而是引发/处理异常以允许程序干净地完成。如果你想关闭回溯,只需使用:
sys.trackbacklimit=0
你可以在你的脚本顶部设置它来压缩所有的回溯输出,但我更喜欢少用它,例如“已知错误”,我希望输出是干净的,例如在文件foo.py中:
import sys
from subprocess import *
try:
check_call([ 'uptime', '--help' ])
except CalledProcessError:
sys.tracebacklimit=0
print "Process failed"
raise
print "This message should never follow an error."
如果CalledProcessError被捕获,输出将如下所示:
[me@test01 dev]$ ./foo.py
usage: uptime [-V]
-V display version
Process failed
subprocess.CalledProcessError: Command '['uptime', '--help']' returned non-zero exit status 1
如果发生任何其他错误,我们仍然得到完整的回溯输出。
比如import sys;sys.exit (0) ?
使用内置的python函数quit()就可以了。 不需要导入任何库。 我使用的是python 3.4
是什么
import sys
....
....
....
sys.exit("I am getting the heck out of here!")
没有追溯,而且更明确。
# Pygame Example
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('IBM Emulator')
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
fontObj = pygame.font.Font('freesansbold.ttf', 32)
textSurfaceObj = fontObj.render('IBM PC Emulator', True, GREEN,BLACK)
textRectObj = textSurfaceObj.get_rect()
textRectObj = (10, 10)
try:
while True: # main loop
DISPLAYSURF.fill(BLACK)
DISPLAYSURF.blit(textSurfaceObj, textRectObj)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
except SystemExit:
pass