如何自动缩进python代码为什么要检测代码..?

时间:2013-03-07 10:07:33

标签: python indentation auto-indent

我正在对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 个答案:

答案 0 :(得分:1)

在你的例子中,它实际上相当容易:

  • “条目”消息应与其后面的语句具有完全相同的缩进。

  • “退出”消息应与相应的“条目”消息具有完全相同的缩进。

也就是说,您可以通过使用装饰器而不是两个显式print语句来大大简化作业。 @trace prints之类的内容比{{1}}对更容易插入代码中。

为了更进一步,您可以动态执行检测,而不是修改源文件。