我想制作一个自我复制的程序,它将生成一个新的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'.
^{} 模块提供了运行任何程序的方法。在
你的脚本不是一个程序,而是一个脚本,需要由一个解释器程序执行。在本例中,您可能希望它由当前运行的同一个解释器程序执行,该解释器程序可用作^{} 。在
当您运行} ),并将任何其他参数作为该脚本的参数(成为
python
时,它将它的第一个参数视为要运行的脚本(在该脚本中它将变成^{sys.argv[1:]
)。在命令行参数必须是字符串,因此必须序列化要传递给字符串的任何参数,然后在另一端反序列化它们。对于整数,这是微不足道的,但对于更复杂的类型则可能不是。在
会是这样的:
显然,如果您不想捕获它的stdout,也不想捕获它的stderr,或者不想将非零retcode作为异常处理,或者希望在后台运行它而不是等待它,等等,那么
subprocess
函数调用将有所不同。但是如果你读了这些文档,你可能想做的任何事情都有很好的例子。在然后,生成的脚本将执行以下操作:
^{pr2}$尽管与子流程相比效率和清洁度相对较低,但您可以使用操作系统,这将复制用于执行任务的shell,:
或者如果它在另一个目录中,你可以通过
^{pr2}$相关问题 更多 >
编程相关推荐