Python 跟踪模块和文件路径

标签 python trace filepath

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

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

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

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

最佳答案

这不是很明显,但我发现如果我在 trace 中使用 countfuncs 参数,或者 --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()

...(使用来自 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 脚本正在使用哪些文件。

关于Python 跟踪模块和文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492837/

相关文章:

trace - 无法使用 SerilogTraceListener 将 Trace.WriteLine 重定向到 Serilog

c# - 无论 .NET 版本/环境如何,都能找到 ildasm.exe 和 ilasm.exe 文件的文件路径的保证方法?

python - 是否有一个版本的 ConfigParser 可以处理没有节头的文件?

python - Shopify Python API : How to serialize products list to JSON?

python - OpenCV Python 错误 : Unsupported data type (=4) in function 'cv::opt_AVX2::getMorphologyRowFilter'

python - 基于内容重叠合并子列表,python 3

.net - .NET 跟踪中的 "switch"和 "filter"有什么区别?

java - 使用 JDK5 进行跟踪

php - 如何将图像的文件路径转换为实际图像?

objective-c - 我的文件在 XCode 的 Resources 文件夹中的物理路径(对于 IOS)