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

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

刘棋
2023-03-14
问题内容

解析一个.py文件,读取AST,对其进行修改,然后写回修改后的源代码我想以编程方式编辑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)



 类似资料:
  • 问题内容: 我想以编程方式编辑python源代码。基本上,我想读取一个文件,生成AST,然后写回修改后的python源代码(即另一个文件)。 有多种方法可以使用标准python模块(例如或)来解析/编译python源代码。但是,我认为它们都不支持修改源代码(例如删除此函数声明)然后写回修改后的python源代码的方法。 更新:我想这样做的原因是我想为python编写一个Mutation测试库,主要

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

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

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

  • 问题内容: 我有一个jar文件,它在html文件中用作applet。我想修改jar文件的内容并重建jar文件,以便html与新的jar文件配合使用。我怎样才能做到这一点?? 我已经尝试使用7zip解压缩,并修改了源代码并创建了新的jar。但是当我在html中使用它时会显示一些java.lang.Classnotfound错误 问题答案: 您可以根据需要解压缩或重新解压缩类和源文件。 解开 罐 ht

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