2015-06-08 26 views
1

假设我给出以下回溯:如何从回溯堆栈打印第一线

Traceback (most recent call last):  
    File "<wingdb_compile>", line 3, in <module>  
    File "C:\Python34\lib\ftplib.py", line 419, in login  
    resp = self.sendcmd('PASS ' + passwd)  
    File "C:\Python34\lib\ftplib.py", line 272, in sendcmd  
    return self.getresp()  
    File "C:\Python34\lib\ftplib.py", line 245, in getresp  
    raise error_perm(resp)  
ftplib.error_perm: 530 Login incorrect. 

我已成功地提取错误细节,但什么难倒我是我会怎样提取行:

File "<wingdb_compile>", line 3, in <module> 

我一直在寻找在回溯包的方法,但不知道是否任何一个曾与这里

回答

2

功能traceback.format_exc经验主要是为构建这

这就好比print_exc(limit)返回一个字符串,而不是打印到文件中。

>>> import traceback 
>>> try: 
...  x = 2/0 
... except: 
...  error = traceback.format_exc() 
... 
>>> error 
'Traceback (most recent call last):\n File "<stdin>", line 2, in <module>\nZeroDivisionError: division by zero\n' 
>>> linesoferror = error.split('\n') 
>>> linesoferror 
['Traceback (most recent call last):', ' File "<stdin>", line 2, in <module>', 'ZeroDivisionError: division by zero', ''] 

所以,现在你想的第一行,那么你可以简单地使用

>>> linesoferror[1] 
' File "<stdin>", line 2, in <module>' 

瞧!你有你想要的

ALERT - 有效的Python 2.4.1及以上