2015-07-19 74 views
-1

是否可以創建一個打印代碼的下一行的方法?是否可以在代碼中打印下一行?

def print_next_line(): 
    sth 

import fxx 

print 'XXX' 
print_next_line() 
file.split('/') 
.... 

>>> 'XXX' 
>>> 'file.split('/')' 

我在想,它可能在棧中的某個地方,但我不確定,因爲它是下一個,而不是前一行。

+1

爲什麼你要做到這一點? – Alik

+0

@Alik它用於調試目的。 –

+0

請你詳細說明一下嗎? – Alik

回答

0

那麼你可以open()您的.py文件並迭代找到特定的行,然後打印它。

2

直接的方法。我使用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 
1

使用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()) 
相關問題