我相信很多人在调试Python代码时都是print的重度使用者.我也曾想过学一学logging模块,但是粗略一看还是print好用啊.但是当时调试还行,隔一天,我就不知道是哪儿的print在输出这些信息了,我想删掉它们啊.于是乎,一个输出文件名以及行号的print就显得很有必要了.
Python获取当前文件名和行号
获取文件名
直接使用__file__
变量即可,它指明了当前脚本的路径.
获取行号
使用sys._getframe().f_lineno
,代表当前代码的行号
编写自己的print函数
我在Python路径中加入了自己的一个包,里面有我自己写的各种常用的函数,其中就包括如下的函数:
def debugPrinter(file, lineno, data=None):
"""
输出带有文件名和行号的调试信息
:param file: 对应__file__变量
:param lineno: 对应sys._getframe().f变量
:param data: 需要输出的信息
:return:
"""
fileName = file.split('/')[-1]
lineno = lineno.f_lineno
print(f'[{fileName} {lineno}] {data}')
输出效果如下
[BS_threadV3.py 130] iou: 1.0
这样,再也不担心以后找不到是哪里在输出信息了