【发布时间】:2014-01-19 06:01:04
【问题描述】:
我想制作一个自我复制的程序,它会创建一个新的 Python 文件,向其中写入代码并运行它。这是我希望代码的样子:
import os
num = 0
fileName = 'wrm' + str(num)
fileType = '.txt'
finalName = fileName + fileType
pyName = fileName + '.py'
f = open(finalName, 'w')
f.write("Whatever code I want to write")
f.close()
os.rename(finalName, pyName)
num = num + 1
# Here I need a command that runs the file, giving num as an 'argument'.
【问题讨论】:
-
你可能想从subprocess开始
-
@thefourtheye 你有什么更简单的吗?我不是很先进……我不太能理解。
-
可能有更好的方法来做你想做的事。为什么不直接定义一个函数并调用它,而不是生成源代码呢?如果您希望它在一个单独的进程中,
multiprocessing可以做到这一点。即使出于某种原因它必须是源代码,compile或exec也可能比创建和运行文件更好。即使它必须是一个文件,创建一个模块并importing 它来运行代码可能会更好。如果你真的需要这样做,它是可行的(正如我的答案所示),但它可能不是你实际问题的正确答案。 -
对于一个非常酷的示例,您可以使用MacroPy 即时生成可运行代码而不是源代码。它的实现对你来说可能有点太高级了,但作为一个例子,它是令人难以置信的。
标签: python file python-3.3