如何在代码中自动缩进 Python 代码?
我正在对一个Python应用程序进行逆向工程。在这个过程中,我会通过动态插入代码来观察应用程序的行为。现在我遇到的问题是,我需要在正确的缩进级别插入代码。
比如说,假设我有一段代码需要插入:
class A:
def move(self,name):
name=self.name
print name
def move1(self):
print 'dude'
对于上面的示例代码,我会在入口和退出时添加日志记录,插入后的代码应该像下面这样:
enter code class A:
def move(self,name):
print 'Entry move class='A''
name=self.name
print name
Print'Exit move class='A''
def move1(self):
print 'Entry move1 class='A''
print 'dude'
print 'Exit move class='A''
这就是我想要的插入效果,但实际上我得到的是:
enter code class A:
def move(self,name):
print 'Entry move class='A''
name=self.name
print name
print'Exit move class='A''
def move1(self):
print 'Entry move1 class='A''
print 'dude'
print'Exit move1 class='A''
因为我在写一个脚本,它会把代码插入到下一行,并且不知道Python代码的缩进格式。
有没有办法在插入时自动调整缩进,或者我需要知道下一行字符的索引,然后在字符串中插入空格再进行插入呢?
1 个回答
1
在你的例子中,其实挺简单的:
“entry”消息的缩进要和后面的语句完全一致。
“exit”消息的缩进要和对应的“entry”消息完全一致。
不过,你可以通过使用装饰器来大大简化这个工作,而不是用两个明确的print
语句。像@trace
这样的东西,从这个页面上可以找到,插入代码要比成对的prints
简单得多。
更进一步,你甚至可以在不修改源文件的情况下,动态地进行监控。