在Python内部解析Python代码?
我们有一个比较老的C++工具,它可以自动生成一些Python代码。今天我试着去看这个C++源代码,结果真是让人想自杀。我的目标是清理这个工具生成的源代码,并通过添加sphinx标签,把类链接到我们的内部文档系统。
现在我想知道,是否有什么很棒的工具可以在Python中解析Python代码呢?
类似这样的东西有很多:
foo._methods_.append()
Snip 500 lines
foo._methods_.append()
有什么建议吗?
基本上,我现在有一堆功能正常但结构混乱的代码,我想提取一些特定的部分,把它们移动到自己的文件里,并清理掉那些杂七杂八的东西。
我快速看了一下parser和AST,但找不到它们被实际使用的例子。
3 个回答
你可以试试一些Python文档生成工具,看看能否帮助你解决整体问题。我用过epydoc,效果很好。
或者,如果你能说服你的老板花200美元,买一份SparxSystems的Enterprise Architect。这款软件可以对你的Python代码进行逆向工程,生成类图,并让你点击类图查看底层代码。它不仅支持Python,还适用于很多其他编程语言,是一个很棒的设计和文档工具。(还有一个99美元的版本,但那个不包括代码导入功能。)
根据你的需求,你可能还想了解一下2to3这个库。它的主要功能是帮助把Python 2.x的程序自动转换成Python 3.0,所以它的使用场景就是拿一个Python源文件,进行一些处理,然后输出一个新的源文件。
lib2to3相比于ast模块有一个好处,就是ast在处理时不会保留空格和注释,而lib2to3会保留这些。如果你已经在处理自动生成的代码,这可能对你来说就不是问题了。
你可以使用 tokenize 模块来把 Python 代码分解成一个个小部分,这些小部分叫做“标记”。比如说,这个脚本可以用来去掉 Python 代码中的注释和文档字符串。
另外,你也可以使用 parser 模块。
或者使用 ast 模块。