python:如何起床直到我的代码出现最后一个错误

标签 python error-handling

所以当我运行这个...错误是在这一行 bomb=pd.DataFrame(here,0) 但是跟踪显示了一堆来自 pandas 库来解决错误。

import traceback,sys
import pandas as pd        

def error_handle(err_var,instance_name=None): #err_var list of variables, instance_name
    print(traceback.format_exc())
    a= sys._getframe(1).f_locals

    for i in err_var: # selected var for instance
        t= a[instance_name]
        print i,"--->",getattr(t,i.split(".")[1])



here=['foo']

err_var = ['self.needthisone','self.constant2']
class test:

    def __init__(self):
        self.constant1 = 'hi1'
        #self.constant2 = 'hi2'
        #self.needthisone = ':)'
        for i in err_var:
            setattr(self, i.split('.')[1], None)

    def other_function(self):
        self.other_var=5

    def testing(self):
        self.other_function()
        vars=[self.constant1,self.constant2]

        try:
            for i in vars: 
                bomb=pd.DataFrame(here,0)

        except:
            error_handle(err_var,'self')

t=test()
t.testing()    

我如何抑制所有这些并使错误看起来像这样:

Traceback (most recent call last):
  File "C:\Users\Jason\Google Drive\python\error_handling.py", line 34, in testing
    bomb=pd.DataFrame(here,0)
TypeError: Index(...) must be called with a collection of some kind, 0 was passed

我只想要与我相关的内容以及我编写的最后一行错误的代码。

这是原文:

Traceback (most recent call last):
  File "C:\Users\Jason\Google Drive\python\error_handling.py", line 35, in testing
    bomb=pd.DataFrame(here,0)
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 330, in __init__
    copy=copy)
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 474, in _init_ndarray
    index, columns = _get_axes(*values.shape)
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 436, in _get_axes
    index = _ensure_index(index)
  File "C:\Python27\lib\site-packages\pandas\core\indexes\base.py", line 3978, in _ensure_index
    return Index(index_like)
  File "C:\Python27\lib\site-packages\pandas\core\indexes\base.py", line 326, in __new__
    cls._scalar_data_error(data)
  File "C:\Python27\lib\site-packages\pandas\core\indexes\base.py", line 678, in _scalar_data_error
    repr(data)))
TypeError: Index(...) must be called with a collection of some kind, 0 was passed

self.needthisone ---> None
self.constant2 ---> None

最佳答案

您可以使用 sys.traceback 定义追溯回溯的时间。多变的。如果您的代码只有 3 层深(文件中类中的函数),那么您可以使用代码适本地定义它:

sys.tracebacklimit = 3

在文件的顶部。 注意这一点:随着您编写的代码越多,您编写的部分将变得越来越深,您可能很快就会发现错误是回溯中更深层次的结果。作为一般规则,我会避免使用变量,暂时只处理更长的回溯。

关于python:如何起床直到我的代码出现最后一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637718/

相关文章:

python - izip 的示例代码如何工作?

node.js - 测试意外异常的最佳实践是什么?

php 管理 session session

javascript - 没有数据时显示消息

vb.net - 错误: 'AddRange' is not a member of 'System.Array'

python - 如何解决绘制多个曲面时 pygame 中的滞后问题

python - Python 中的非阻塞套接字?

python - Pymodbus/Twisted 异步客户端重新连接

python - 从具有特定索引的python列表中挑选项目

r - 埃德加套餐| .txt文件问题