2013-01-24 41 views
2

我正在使用python's trace module來跟蹤某些代碼的執行情況。我注意到,當後來被打印的執行,它在下面的表格印刷(分工作下面的例子如下):Python的跟蹤模塊和文件路徑

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

可以得到完整的(絕對或相對)文件路徑,而不僅僅是文件名。有意義的是,在trace.Trace的調用中會有一個標誌,這應該允許我這樣做,但我似乎無法在文檔中找到任何此類參數。

如果這樣的標誌不存在,我將如何去獲取文件路徑?我想我可以檢查sys.path中的所有目錄,但是如何處理兩個不同目錄具有相同名稱的文件的情況?

+0

[Tracing fIle path and line number]的可能重複(http://stackoverflow.com/questions/14638041/tracing-file-path-and-line-number) – aquavitae

回答

0

這不是很明顯,但我發現,如果我使用tracecountfuncs參數,或--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道格·赫爾曼的例子)我得到以下的輸出:

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腳本正在使用哪些文件。