获得更详细的引用错误返回(错误+数据)

时间:2013-12-14 12:22:56

标签: python python-2.7 traceback

我使用以下代码:

import traceback
errors = open('ERROR(S).txt', 'a')
try:
    execfile("testing.py", {})
except Exception:
    errors.write(traceback.format_exc() + '\n')
    errors.write("\n")
errors.close()

例如我可能会收到

Traceback (most recent call last):
  File "C:\starter.py", line 87, in execute_subscripts
    execfile("test.py", {})
  File "test.py", line 85, in <module>
    JSONDATA = json.loads(JSONDATA)
  File "C:\Python27\lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

如何让它检索变量JSONDATA内的数据以及此追溯?

1 个答案:

答案 0 :(得分:1)

您可以使用logging库并将JSONDATA记录到带有logging.StreamHandler的stderr或带有logging.FileHandler的文件。

示例:

l = logging.getLogger("test")
l.addHandler(logging.StreamHandler())
l.setLevel(logging.DEBUG)
...
l.debug("JSON DATA: %s", JSONDATA)
...

我认为这是找出问题的正确方法。 (或者您可以使用简单的print,或者如果您想详细使用pdb