Es una práctica mucho mejor evitar usar sys.exit () y, en su lugar, generar / manejar excepciones para permitir que el programa termine limpiamente. Si desea desactivar el rastreo, simplemente use:
sys.trackbacklimit=0
Puede configurar esto en la parte superior de su secuencia de comandos para aplastar toda la salida de rastreo, pero prefiero usarla con más moderación, por ejemplo, "errores conocidos" donde quiero que la salida esté limpia, por ejemplo, en el archivo 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."
Si se detecta CalledProcessError, el resultado se verá así:
[me@test01 dev]$ ./foo.py
usage: uptime [-V]
-V display version
Process failed
subprocess.CalledProcessError: Command '['uptime', '--help']' returned non-zero exit status 1
Si se produce cualquier otro error, todavía obtenemos la salida de rastreo completo.