是否可以在代码中打印下一行?

时间:2015-07-19 09:18:41

标签: python string stack

是否可以制作一个打印下一行代码的方法?

def print_next_line():
    sth

import fxx

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

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

我在想它可能在堆栈的某个地方,但我不确定,因为它是下一个,而不是前一行。

4 个答案:

答案 0 :(得分: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 :(得分:1)

您需要的只是profiling tooldebugger

答案 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())

答案 3 :(得分:0)

你可以open()你的.py文件并迭代找到特定的行,然后打印出来。