Python 将整个异常文本转换为文本文件

Python 将整个异常文本转换为文本文件,python,exception,Python,Exception,我需要制作一个Error log.txt,当出现错误时,应该将该错误的全部内容写入其中 当执行时,例外情况除外,如e:print(e)我只得到错误的最后一行。也就是说,只能将str(而不是“int”)连接到str 我需要的内容是 Traceback (most recent call last): File "E:\lib\site-packages\pandas\core\ops\array_ops.py", line 149, in na_arithmetic_op result

我需要制作一个
Error log.txt
,当出现错误时,应该将该错误的全部内容写入其中

当执行
时,例外情况除外,如e:print(e)
我只得到错误的最后一行。也就是说,
只能将str(而不是“int”)连接到str

我需要的内容是

Traceback (most recent call last):
  File "E:\lib\site-packages\pandas\core\ops\array_ops.py", line 149, in na_arithmetic_op
    result = expressions.evaluate(op, str_rep, left, right)
  File "E:\lib\site-packages\pandas\core\computation\expressions.py", line 208, in evaluate
    return _evaluate(op, op_str, a, b)
  File "E:\lib\site-packages\pandas\core\computation\expressions.py", line 70, in _evaluate_standard
    return op(a, b)
TypeError: can only concatenate str (not "int") to str

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:/checking sum.py", line 9, in <module>
    df2.index = df2.index + 2
  File "E:\lib\site-packages\pandas\core\indexes\base.py", line 2119, in __add__
    return Index(Series(self) + other)
  File "E:\lib\site-packages\pandas\core\ops\common.py", line 64, in new_method
    return method(self, other)
  File "E:\lib\site-packages\pandas\core\ops\__init__.py", line 503, in wrapper
    result = arithmetic_op(lvalues, rvalues, op, str_rep)
  File "E:\lib\site-packages\pandas\core\ops\array_ops.py", line 197, in arithmetic_op
    res_values = na_arithmetic_op(lvalues, rvalues, op, str_rep)
  File "E:\lib\site-packages\pandas\core\ops\array_ops.py", line 151, in na_arithmetic_op
    result = masked_arith_op(left, right, op)
  File "E:\lib\site-packages\pandas\core\ops\array_ops.py", line 112, in masked_arith_op
    result[mask] = op(xrav[mask], y)
TypeError: can only concatenate str (not "int") to str

回溯(最近一次呼叫最后一次):
文件“E:\lib\site packages\pandas\core\ops\array\u ops.py”,第149行,na\u算术\u op
结果=表达式。求值(op,str_rep,左,右)
文件“E:\lib\site packages\pandas\core\computation\expressions.py”,第208行,在evaluate中
返回-评估(op,op-str,a,b)
文件“E:\lib\site packages\pandas\core\computation\expressions.py”,第70行,在标准中
返回op(a、b)
TypeError:只能将str(而不是“int”)连接到str
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“E:/checking sum.py”,第9行,在
df2.index=df2.index+2
文件“E:\lib\site packages\pandas\core\index\base.py”,第2119行,添加__
返回索引(系列(自身)+其他)
文件“E:\lib\site packages\pandas\core\ops\common.py”,第64行,采用新方法
返回方法(自身、其他)
文件“E:\lib\site packages\pandas\core\ops\\uuuuu init\uuuuuuu.py”,第503行,在包装器中
结果=算术运算(左值、右值、运算、str_rep)
文件“E:\lib\site packages\pandas\core\ops\array\u ops.py”,第197行,算术\u op
res_values=na_算术运算(左值、右值、运算、str_rep)
文件“E:\lib\site packages\pandas\core\ops\array\u ops.py”,第151行,na\u算术\u op
结果=屏蔽的算术运算(左、右、运算)
文件“E:\lib\site packages\pandas\core\ops\array\u ops.py”,第112行,掩蔽格式
结果[遮罩]=op(xrav[遮罩],y)
TypeError:只能将str(而不是“int”)连接到str
所需文本如上所述。

您可以使用模块的
print\u exc
方法打印完整的回溯

import traceback

error_file = open('errors.txt', 'w')
try:
    do_stuff()
except Exception, err:
    print Exception, err
traceback.print_exc(file=error_file)

我得到了我想要的

try:

except:
    error = traceback.format_exc()
    with open('mytxt.txt') as text:
           text.write(error)


然后将
print(e)
更改为
raise e
(或者干脆不捕捉异常)。请看这里。如何将此设置为文本文件或变量。请阅读问题如果您查阅了
print\u exc
方法的文档,那么您会找到文件参数。使用该参数,可以传递要在其中写入相同内容的文件对象。