繁体   English   中英

如何从回溯堆栈中打印第一行

[英]How to print the first line from a traceback stack

假设我得到以下回溯:

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>

我正在查看跟踪包中的方法,但想知道是否有人在这里有经验

函数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>'

瞧! 你有你想要的

警报 - 适用于Python 2.4.1及更高版本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM