小编典典

解析 .py 文件,读取 AST,修改它,然后写回修改后的源代码

all

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

有一些方法可以使用标准 python 模块来解析/编译 python
源代码,例如astcompiler.
但是,我认为它们中的任何一个都不支持修改源代码的方法(例如删除此函数声明),然后将修改后的 python 源代码写回。

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


阅读 68

收藏
2022-07-13

共1个答案

小编典典

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

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

如果您想进行更多重构(如转换),rope 项目可能会满足您的需求

ast模块是您的另一个选择,并且有一个较旧的示例说明如何将语法树“解析”回代码(使用解析器模块)。但是该ast模块在对代码进行
AST 转换然后转换为代码对象时更有用。

redbaron项目也可能很合适(ht Xavier Combelle

2022-07-13