当前位置: 首页 > 面试题库 >

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

左翰海
2023-03-14
问题内容

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

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

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


问题答案:

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

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

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

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

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



 类似资料:
  • 问题内容: 解析一个文件,读取AST,对其进行修改,然后写回修改后的源代码我想以编程方式编辑python源代码。基本上,我想读取一个文件,生成AST,然后写回修改后的python源代码(即另一个.py文件)。 有多种方法可以使用标准python模块(例如ast或)来解析/编译python源代码compiler。但是,我认为它们都不支持修改源代码(例如删除此函数声明)然后写回修改后的python源代

  • 问题内容: 我需要修改现有的APK,修改源,然后重新编译。 我可以使用dex2jar或apktool对其进行反编译,效果很好 从jar文件中,我可以获取Java源代码(使用jd-gui) 然后我可以修改Java文件 但是现在我想知道如何重新编译java文件并将它们放回jar文件中!(jar部分应该很简单,主要问题似乎是如何为Android重新编译Java文件) 我知道另一种解决方案是使用apkto

  • 问题内容: 我从动画gif中读取了分离的图像,我只需要对其进行更改,然后将其设置回文件,并与编写者一起另存为新文件。 我会很高兴为您提供任何帮助。 问题答案: Tanks @StanislavL 在评论中提供了链接(https://community.oracle.com/thread/1264385),这确实很有帮助。有我的解决方案:

  • 问题内容: 有没有办法只选择目录中的最后一个文件(带有扩展名?) 还是我必须解析整个目录并使用检查? 问题答案: 是的,您必须通读它们。但是由于目录访问已被缓存,因此您不必担心。

  • 问题内容: 嗨,我正在尝试从json文件中获取数据,然后插入和ID,然后执行POST REST。我的文件data.json具有: 并且我想添加一个id,以便json数据如下所示: 所以我尝试了: 我无法加载json格式文件。我应该怎么做才能将json文件转换为json对象并添加另一个id值。 问题答案: 使用设置项目。

  • 每当我使用Apatche POI打开Excel文件时,文件都会被修改,即使我只是在读取文件而不进行任何修改。 以这样的测试代码为例。 Test 总是失败,因为 Apache POI 总是会修改该文件。在测试使用MS Office新创建的空白Excel文件时,Apache POI将文件从8.1 kb切割到6.2 kb并损坏文件。 测试对象: 以及版本3.12 我是否可以防止Apache POI通过其