Python跟踪模块和文件路径

时间:2013-01-24 02:18:49

标签: python trace filepath

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

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

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

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

1 个答案:

答案 0 :(得分:0)

这不是很明显,但我发现如果我使用countfuncs中的trace参数,或--listfuncs参数,如果我使用trace参数从命令行使用import trace from recurse import recurse tracer = trace.Trace(count=False, trace=True, countfuncs=True) tracer.run('recurse(2)') tracer.results().write_results() ,我得到完整的路径名。因此,对于该计划:

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

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

{{1}}

这并不是你想要的,因为你可以看到它忽略了跟踪代码行的指令,所以它没有给出那些代码行旁边的文件路径。但是,它确实告诉您Python脚本正在使用哪些文件。