3
A
回答
3
對於這種特殊的情況下,你可以重定向stdout
到打印輸出和它的調用者一個輔助類。你也可以打破它的一個方法。
完整的示例:
import sys
import inspect
class PrintSnooper:
def __init__(self, stdout):
self.stdout = stdout
def caller(self):
return inspect.stack()[2][3]
def write(self, s):
self.stdout.write("printed by %s: " % self.caller())
self.stdout.write(s)
self.stdout.write("\n")
def test():
print 'hello from test'
def main():
# redirect stdout to a helper class.
sys.stdout = PrintSnooper(sys.stdout)
print 'hello from main'
test()
if __name__ == '__main__':
main()
輸出:
printed by main: hello from main
printed by main:
printed by test: hello from test
printed by test:
您也可以只打印inspect.stack()
如果你需要更全面的信息。
1
我能想到的唯一的一點就是用codecs.getwriter('utf8')
返回的streamwriter代替sys.stdout
。然後你可以在pdb中設置write
方法的斷點。或用調試代碼替換它的write
方法。
import codecs
import sys
writer = codecs.getwriter('utf-8')(sys.stdout) # sys.stdout.detach() in python3
old_write = writer.write
def write(data):
print >>sys.stderr, 'debug:', repr(data)
# or check data + pdb.set_trace()
old_write(data)
writer.write = write
sys.stdout = writer
print 'spam', 'eggs'
相關問題
- 1. 在Symfony2中,有沒有一種方法可以很好地打印JSON響應?
- 2. 可打印的html沒有在Firefox上打破新頁面
- 3. 有沒有一種方法可以跟蹤API內的廣告?
- 4. 陣列沒有打印的方法
- 5. 有沒有一種方法可以在調用Fancybox時自動打開.fancybox()
- 6. 有沒有一種方法可以在動畫中打開代碼輔助xml
- 7. 有沒有一種方法可以檢查文件是否已經打開?
- 8. 在Domino Designer中有一種方法可以打開一個MessageBox
- 9. C#有沒有更改打印機設置的方法?
- 10. 有沒有一種方法可以從R內評估JavaScript?
- 11. 有沒有一種方法可以爲wordpress.com配置mathjax?
- 12. 有沒有一種方法可以在模擬中配置Gatling?
- 13. 可以在垂直iTextSharp的地方元素沒有打破頁
- 14. 有沒有辦法打印一個特定DIV的內容
- 15. 有沒有一種方法可以偵聽使用JavaScript發送到打印機的頁面?
- 16. 有沒有一種方法可以在不顯示窗口或標籤的情況下打印html源代碼?
- 17. 有沒有一種方法可以避免eclipse中的語句着色打印語句?
- 18. 一種打印正數的方法
- 19. 有沒有辦法可以打印出X509Certificate?
- 20. 有沒有什麼方法可以去除這種水印?
- 21. 有沒有一種解決方法可以使DateAxis在範圍內的第一個日期前打勾
- 22. 有沒有一種方法在打印中包含CSS背景圖像?
- 23. 有沒有辦法打破boost :: mpl for_each?
- 24. 有沒有辦法打破getline?
- 25. 以樹方法打印所有節點
- 26. 有沒有一種方法可以將T4指令置於括號內?
- 27. 沒有打印特定CSS的打印
- 28. 有沒有一種方法可以使用autorun.inf打印多個文件和類型?
- 29. 打印字符串的所有變種最有效的方法?
- 30. 有沒有一種方法來以編程方式打開/關閉粘滯鍵?
+1 - 漂亮的劈! – ThiefMaster
太好了......我希望有一種方法可以對任意內建函數執行此操作,但是我可以使用此功能追蹤打印內容。非常感謝! – user961826