Намного лучше избегать использования 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
Если возникает какая-либо другая ошибка, мы все равно получаем полный вывод трассировки.