是否可以創建一個打印代碼的下一行的方法?是否可以在代碼中打印下一行?
def print_next_line():
sth
import fxx
print 'XXX'
print_next_line()
file.split('/')
....
>>> 'XXX'
>>> 'file.split('/')'
我在想,它可能在棧中的某個地方,但我不確定,因爲它是下一個,而不是前一行。
是否可以創建一個打印代碼的下一行的方法?是否可以在代碼中打印下一行?
def print_next_line():
sth
import fxx
print 'XXX'
print_next_line()
file.split('/')
....
>>> 'XXX'
>>> 'file.split('/')'
我在想,它可能在棧中的某個地方,但我不確定,因爲它是下一個,而不是前一行。
所有你需要的是profiling tool或只是debugger。
那麼你可以open()
您的.py文件並迭代找到特定的行,然後打印它。
直接的方法。我使用inspect
模塊來確定調用print_next_line
的文件和行。稍後我閱讀該文件以查找下一個字符串。你可能想在這裏補充一些錯誤處理(如果有一種是在一個文件中沒有下一行等等?)
def print_next_line():
def get_line(f, lineno):
with open(f) as fp:
lines = fp.readlines()
return lines[lineno-1]
import inspect
callerframerecord = inspect.stack()[1]
frame = callerframerecord[0]
info = inspect.getframeinfo(frame)
line_ = info.lineno
file_ = info.filename
print get_line(file_, line_ + 1)
print 'XXX'
a = 1
print_next_line()
b = a*2
使用Python的inspect
模塊:
import inspect
def print_next_line():
lineno = inspect.currentframe().f_back.f_lineno
with open(__file__) as f:
print(f.readlines()[lineno].rstrip())
爲什麼你要做到這一點? – Alik
@Alik它用於調試目的。 –
請你詳細說明一下嗎? – Alik