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

2024-10-02 16:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能生成一个方法来打印下一行代码?你知道吗

def print_next_line():
    sth

import fxx

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

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

我想它可能在堆栈中的某个地方,但我不确定,因为它是下一行,而不是上一行。你知道吗


Tags: 方法代码import堆栈def地方linefile
3条回答

你只需要一个profiling tool或者一个debugger。你知道吗

使用Python的^{}模块:

import inspect

def print_next_line():
    lineno = inspect.currentframe().f_back.f_lineno
    with open(__file__) as f:
        print(f.readlines()[lineno].rstrip())

直接接近。我使用^{}模块来确定调用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

相关问题 更多 >