【发布时间】:2013-06-11 18:57:34
【问题描述】:
我的主要目标是解析 python 循环,以便我可以插入一些语句进行分析。
Normal code:
#A.py
[code Starts]
.
.
.
while [condition]:
[statements]
[statements]
[statements]
.
.
.
[code ends]
仪表代码:
Normal code:
#A.py
[code Starts]
.
.
.
count =0 <---------- inserted code
print "Entry of loop" <---------- inserted code
while [condition]:
print "Iteration Number " + count++ <---------- inserted code
[statements]
[statements]
[statements]
print "Exit of loop" <---------- inserted code
.
.
.
[code ends]
我的目标是将上述代码以适当的缩进方式插入到适当的位置。该循环也可以是一个 for 循环。为了实现上述检测代码,我需要解析 A.py 文件中的循环并插入这些代码。
有没有一种好方法可以解析这些循环并获取循环的行号以便我可以检测?
谢谢
【问题讨论】:
-
您尝试过使用
ast模块吗?这个任务与your previous question非常相似。 -
@Janne Karila 是的,我实际上需要完全像我在上一个问题中所做的那样。但由于我从未使用过 ast 我不知道要使用什么功能。如果你能发布一个简单的场景,你会很好吗?
-
假设您解析文件,您将如何识别要检测的循环,还是全部检测?
-
@chepner 我会全部使用。这是我的要求
-
您只想要模块级别的循环吗?例如在
if some condition: for elem in iterable: do stuff中是否要添加内部for的代码?你介意嵌套循环吗?你想处理单行循环(例如for x in a: print x)吗?在最简单的情况下,逐行读取文件并在需要时输出额外的行应该很容易,否则您必须进行更多解析。
标签: python parsing loops instrumentation