使用Python';使用基本I/O操作或创建Python文件?

使用Python';使用基本I/O操作或创建Python文件?,python,code-generation,Python,Code Generation,最有效的方法是使用Python中包含的基本文件I/O模块吗?我知道这不是很有效,但我真的找不到更好的方法来操作Python(.py)文件,添加/减去/追加代码 例如: obj = open('Codemanipulationtest.py', 'w+') obj.write("print 'This shows you can do basic I/O?'") obj.close() 将操作我拥有的名为“codemanipulationtest.py”的文件,并向其中添加一条打印语句。这是可以

最有效的方法是使用Python中包含的基本文件I/O模块吗?我知道这不是很有效,但我真的找不到更好的方法来操作Python(.py)文件,添加/减去/追加代码

例如:

obj = open('Codemanipulationtest.py', 'w+')
obj.write("print 'This shows you can do basic I/O?'")
obj.close()
将操作我拥有的名为“codemanipulationtest.py”的文件,并向其中添加一条打印语句。这是可以解决的问题吗?是否有更简单或更安全/高效的方法来操作/创建新的python代码

我已经读过了:

老实说,I/O方法似乎更简单。我对Python有点生疏,所以我可能只是在装傻……提前感谢您的回复

编辑


这一切的意义仅仅是玩弄效果,玩弄代码。我在考虑将我最终使用的任何东西连接到某种学习算法上,看看它一次能生成多少代码,看看它能从哪里开始……

这取决于你对生成的代码做什么。您有几个选项,每个选项都比上一个更高级

  • 创建一个文件并导入它
  • 创建一个字符串并执行它
  • 编写代码,直接动态创建类(或模块),而不是作为文本,在其中插入所需的任何函数
  • 直接生成Python字节码并执行它
如果您编写的代码将被其他程序员使用和修改,那么第一种方法可能是最好的。否则,对于大多数用例,我建议使用第三种。最后一种只适用于受虐狂和前汇编语言程序员


如果您想修改现有的Python源代码,有时可以通过基本的搜索和替换进行简单的修改,特别是如果您对正在使用的源文件有所了解,但是更好的方法是使用
ast
模块。这为您提供了Python源代码的抽象表示,您可以修改它,然后将其直接编译为Python对象。

为了生成代码,我将其分解为各种类,如IF类、FOR类等等。然后您可以使用输出,其中每个类都有一个to_str()方法,您可以依次调用该方法

statements = [ ... ]

obj = open( "some.py", "w+" )

for s in statements:
    obj.write( s.to_str() )

obj.close()
通过这种方式,您可以轻松地扩展您的项目,它将更容易理解和灵活。而且,它与您想要的简单写入方法的使用保持一致


根据学习算法的不同,这种对不同类的突破可以很好地导致代码的伪遗传算法。您可以将基因组编码为一系列语句,然后您只需找到一种方法将参数传递给每个语句(如果需要的话)即可。

这完全取决于您想做什么。告诉我们你想用它做什么。这两种方法都可能适用于给定的任务。您想做什么?您想编写可以编写程序的程序,目的是什么?请注意,
'w+'
会截断现有文件。您可能需要使用
'a'
(即append)模式。是的,我注意到w+不久后会截断它。谢谢,那么我假设现在还没有一个库,你想做什么,我不认为有一个特定的库。因此,您必须自己编写代码生成部分。机器学习部分有一个你可以研究的大脑,它可以阻止你写学习部分。