我相信很多人在調試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
這樣,再也不擔心以後找不到是哪裏在輸出信息了