【问题标题】:Is it possible to print a next line in a code?是否可以在代码中打印下一行?
【发布时间】:2015-07-19 09:18:41
【问题描述】:

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

def print_next_line():
    sth

import fxx

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

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

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

【问题讨论】:

  • 你为什么要这样做?
  • @Alik 用于调试目的。
  • 能否详细说明?
  • @Alik 在很多情况下我都需要这个。例如,当我需要知道哪一行代码花费了太多时间或脚本在哪里冻结时。
  • 嗯,有很多好的分析器可以用来确定哪些代码行花费了太多时间。

标签: python string stack


【解决方案1】:

直接接近。我使用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

【讨论】:

    【解决方案2】:

    您只需要profiling tooldebugger

    【讨论】:

      【解决方案3】:

      使用 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())
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-14
          • 2014-08-11
          • 2021-01-25
          • 1970-01-01
          • 2019-12-23
          • 2020-04-19
          • 2020-03-09
          • 2015-05-10
          • 1970-01-01
          相关资源
          最近更新 更多