【问题标题】:Python's trace module and filepathsPython 跟踪模块和文件路径
【发布时间】:2013-01-24 02:18:48
【问题描述】:

我正在使用python's trace module 来跟踪某些代码的执行。我注意到,当稍后打印执行时,它以以下形式打印(下面是最小的工作示例):

<filename>(<line number>): <line of code>

可以获得完整的(绝对或相对)文件路径,而不仅仅是文件名。在对 trace.Trace 的调用中某处会有一个标志应该允许我这样做是有道理的,但我似乎无法在文档中找到任何此类参数。

如果不存在这样的标志,我将如何获取文件路径?我想我可以检查sys.path 中的所有目录,但是我将如何处理两个不同目录具有相同名称的文件的情况?

【问题讨论】:

标签: python trace filepath


【解决方案1】:

这不是很明显,但我发现如果我在trace 中使用countfuncs 参数,或者如果我在命令行中使用trace 则使用--listfuncs 参数,我得到完整路径名。因此,对于程序:

import trace
from recurse import recurse

tracer = trace.Trace(count=False, trace=True, countfuncs=True)
tracer.run('recurse(2)')
tracer.results().write_results()

...(使用来自 here 的 Doug Hellmann 的示例)我得到以下输出:

functions called:
filename: <string>, modulename: <string>, funcname: <module>
filename: C:\Python33\lib\encodings\cp850.py, modulename: cp850, funcname: IncrementalEncoder.encode
filename: C:\Python33\lib\trace.py, modulename: trace, funcname: _unsettrace
filename: C:\usr\sjl\dev\test\python\recurse.py, modulename: recurse, funcname: recurse

这不是您要查找的内容,因为您可以看到它忽略了跟踪代码行的指令,因此它没有在这些代码行旁边提供文件路径。但是,它确实可以准确地告诉您 Python 脚本正在使用哪些文件。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多