Extracting the traceback

Evan Klitzke evan at yelp.com
Tue Aug 21 20:09:15 EDT 2007


On 8/21/07, billiejoex <gnewsg at gmail.com> wrote:
> Hi there,
> I'm facing a case where I need to get the traceback outptut when
> occurring an exception.
> I solved such problem by using traceback module in conjunction with
> StringIO:
>
> import StringIO, traceback
> try:
>     raise Exception
> except:
>     f = StringIO.StringIO()
>     traceback.print_exc(file=f)
>     print f.getvalue()
>
> ... but this seems a little poor to me since I first put output into
> the StringIO.StringIO(), then I get it back by using getvalue() on
> it.
> Is there a way to avoid the use of StringIO and get such output
> without using such (useless) additional step?

If you just want to print the output (as in your example), you can use
file=sys.stdout or file=sys.stderr in the call to print_exc. If you
want to store the traceback into a string for some other purpose (e.g.
logging, email notifications) I believe that you must use a StringIO
object.

-- 
Evan Klitzke <evan at yelp.com>



More information about the Python-list mailing list