traceback.extract_tb 中的 文件名和行号
时间: 2023-12-04 15:07:14 浏览: 129
`traceback.extract_tb` 函数返回的是一个元组列表,每个元组都表示一帧调用堆栈信息。其中,元组的第一个元素是文件名,第二个元素是行号,第三个元素是函数名,第四个元素是代码行。
例如,以下示例代码:
```python
import traceback
def func1():
1/0
def func2():
func1()
try:
func2()
except Exception as e:
tb_list = traceback.extract_tb(e.__traceback__)
for tb in tb_list:
print(tb)
```
当程序执行到 `func1()` 的时候会抛出 `ZeroDivisionError` 异常,然后被 `func2()` 捕获并输出调用堆栈信息。输出结果如下:
```
('test.py', 5, 'func1', ' 1/0\n')
('test.py', 8, 'func2', ' func1()\n')
('test.py', 11, '<module>', ' func2()\n')
```
其中,第一个元组表示 `func1()` 函数在第 5 行出现错误,第二个元组表示 `func2()` 函数在第 8 行调用了 `func1()` 函数,第三个元组表示程序在第 11 行调用了 `func2()` 函数。
相关问题
traceback.extract_tb
`traceback.extract_tb` 是 Python 标准库中 `traceback` 模块提供的一个函数,用于提取异常堆栈信息中的跟踪条目。它接受一个异常对象作为参数,并返回一个列表,其中每个元素代表异常堆栈中的一个跟踪条目。每个跟踪条目是一个四元组,包括文件名、行号、函数名和源代码行。
示例:
```python
import traceback
def func1():
return 1 / 0
def func2():
func1()
try:
func2()
except Exception as e:
tb_list = traceback.extract_tb(e.__traceback__)
for tb in tb_list:
print(tb)
```
运行结果:
```
('D:/test.py', 4, 'func1', 'return 1 / 0')
('D:/test.py', 8, 'func2', 'func1()')
('D:/test.py', 11, '<module>', 'func2()')
```
traceback.extract_tb()
`traceback.extract_tb()` 是 Python 标准库中 `traceback` 模块提供的方法之一,用于获取当前 Python 解释器中的 traceback 信息。它接收一个异常对象(通常是通过 `sys.exc_info()` 获取的),然后返回一个包含 traceback 帧的列表。每个 traceback 帧都是一个元组,包含四个值:文件名、行号、函数名和源代码行。这个方法通常用于调试 Python 程序的错误,可以将 traceback 信息打印出来,从而帮助程序员找出错误所在的位置。
阅读全文