私の目的は、コード フラグメントの少ないファイルを計測することです。シナリオで説明したい計装中に直面している特定の課題があります。
#A.py
#start of the code
from future import division
import os
.....
....
print "from future import division"
....
#end of the code
ファイル #A.py の先頭にいくつかのステートメントをインストルメント化するコード instrumentation.py を作成します。しかし、何らかの理由により、「将来のインポート部門から」ステートメントは常にpythonファイルで最初に来る必要があります。したがって、インストルメント化するには、ファイル内の「from future import division」という文字列を検索し、それが見つかったら、その行の後にインストルメント化します。次のシナリオはそれを示しています。
#A.py
#start of the code
from future import division
print " i successfully instrumented" <------ #inserted code
import os
.....
....
print "from future import division"
....
#end of the code
しかし、代わりに次のようなシナリオが得られます:
#A.py
#start of the code
from future import division
print " i successfully instrumented" <------ #inserted code
import os
.....
....
print "from future import division"
print " i successfully instrumented" <------ #inserted code
....
#end of the code
私の検索アルゴリズムは、実際のコードと文字列を区別できませんでした。一般的に、文字列と実際のコードをどのように区別できるか知りたいですか?
#instrumentation.py
#start of the code
p=open("A.py",'r')
parser=p.readlines()
while(i<len(parser)):
if("from" and "future" and "import" and "division" in parser[i]):
# I will insert a code fragment in the i+1 position
....
....
#End of the code
私の検索アルゴリズムは上記のシナリオに示されています。