我想在Python中編寫一個腳本,它將讀取任何搜索函數定義的python腳本,並在函數內部添加打印語句以進行調試。將行添加到Python文件進行調試
例如
def function_for_test:
print "this line should be added for debugging purpose"
more code here....
more code here....
到目前爲止,我有這樣的代碼
import os
import re
import sys
match_class = re.compile(r'^[ \t]*(def|class)[ \t]+([a-zA-Z_][a-zA-Z0-9_]*)[ \t]*[:\(]')
for root, dirs, files in os.walk(sys.argv[1]):
for fn in files:
if fn.endswith(".py"):
with open(os.path.join(root, fn), "r+") as source:
while True:
line = source.readline()
if line == "": break
m = match_class.match(line.expandtabs())
if m:
print m.groups()
我在麻煩,因爲,如果我嘗試寫文,現有的文本越來越寫上運行。任何人都可以請建議一些方法來克服這一點。我不想爲此創建另一個文件,並且將文本從原始文件複製到新文件中
你有沒有使用sys.settrace功能考慮。這可以用於每次執行一個函數時執行一個函數,所以可能會滿足您的需求,而不需要解析和修改軟件包源代碼?> – James
我將嘗試閱讀有關settrace ....我需要的是隻要項目中的任何函數得到執行,它就會將輸出打印到命令行或文本文件;這樣我可以跟蹤項目的整個流程。我不應該使用調試這個詞......我需要跟蹤當我使用該程序執行某些操作時被調用的所有函數。例如如果我點擊一個GUI按鈕,如果源代碼中的所有函數都會在調用時在文本文件中打印一行,這樣我就可以知道哪些函數被調用。 – anukalp