我的作品涉及Python代碼中的代碼片段的檢測。所以在我的工作中,我將在python中編寫一個腳本,以便將另一個python文件作爲輸入,並在腳本中插入必需的代碼。如何區分python中的「一個字符串」和「一個實際的代碼」?
下面的代碼是一個文件的示例代碼,我會被插裝:
A.py #normal un-instrumented code
statements
....
....
def move(self,a):
statements
......
print "My function is defined"
......
statements
......
我的劇本究竟做的是檢查在A.py每一行,如果有一個「高清」那麼代碼片段儀表上的代碼頂部的高清功能
下面的例子是最後出來放如何應該是:
A.py #instrumented code
statements
....
....
@decorator #<------ inserted code
def move(self,a):
statements
......
print "My function is defined"
......
statements
......
但我已經導致不同輸出。下面的代碼是我得到的最終輸出:
A.py #instrumented代碼
statements
....
....
@decorator #<------ inserted code
def move(self,a):
statements
......
@decorator #<------ inserted code [this should not occur]
print "My function is defined"
......
statements
......
我可以理解,在改動的代碼它承認「高清」的「定義」類的話它在它上面提供了一個代碼。
實際上,檢測代碼有很多這些問題,我無法正確測量給定的python文件。有沒有其他方法來區分字符串的實際「def」?
謝謝
你是如何在儀器中發現'def'的?如果使用正則表達式然後嘗試'r'\ bdef \ b''。 '\ b'標記一個字邊界。 – cdarke
即使有這樣的聲明,它會工作「這是一個def」 – Kaushik
沒有。要處理嵌入在引號中的文本,您需要消極的查找。 – cdarke