一尘不染

Python-解析一个.py文件,读取AST,对其进行修改,然后写回修改后的源代码

python

解析一个.py文件,读取AST,对其进行修改,然后写回修改后的源代码我想以编程方式编辑python源代码。基本上,我想读取一个.py文件,生成AST,然后写回修改后的python源代码(即另一个.py文件)。

有多种方法可以使用标准python模块(例如ast或)来解析/编译python源代码compiler。但是,我认为它们都不支持修改源代码(例如删除此函数声明)然后写回修改后的python源代码的方法。

更新:我想要这样做的原因是我想为python 编写一个Mutation测试库,主要是通过删除语句/表达式,重新运行测试并查看中断。


阅读 1274

收藏
2020-02-22

共1个答案

一尘不染

Pythoscope会对自动生成的测试用例执行此操作,就像python 2.6 的2to3工具一样(它将python 2.x源转换为python 3.x源)。

这两个工具都使用lib2to3库,该库是python解析器/编译器机制的实现,当从源-> AST->源往返时,可以在源中保留注释。

该绳项目,如果你想要做的更像变换重构可满足您的需求。

该AST模块是你的其他选择,并有一个如何“unparse”语法树放回代码旧的例子(使用解析器模块)。但是,ast当对代码进行AST转换,然后将其转换为代码对象时,该模块更有用。

该redbaron项目也可能是一个不错的选择(HT泽维尔Combelle)

2020-02-22