【发布时间】:2015-10-14 05:24:12
【问题描述】:
我对自我修改代码的想法感到困惑,我想使用 py2exe 将文件更改为 .exe。我是否仍然可以让代码自行修改,还是需要将其保留为 .py?
自行修改代码:
self = "Strain_0.py"
def Write_self(lis):
ws = open(self, "a")
lis.append("t = open('database.txt', 'a')\n")
lis.append("t.write('Success%s')\n"%(self))
lis.append("t.close()\n")
lis.append("ran = success\n")
lis.append("return ran\n")
lis.append(" except:\n")
lis.append("print('failed')\n")
lis.append("t = open('database.txt', 'a')\n")
lis.append("ran = 'failed'")
lis.append("t.write('failed%s')\n"%(self))
lis.append("t.close()\n")
lis.append("return ran\n")
ws.write("def test():\n")
ws.write(" try:\n")
for i in lis:
if i != "except:\n"and " " not in i:
ws.write(" "+i)
else:
ws.write(i)
【问题讨论】:
-
你需要去学习一些好的 ol' ANSI LISP。
-
我不是 Python 人,但如果您从 .exe 文件运行此代码,它不会“自我修改”,它只会使用您提供的代码创建一个新的 Python 文件,除非你还要在输出上运行 py2exe,然后它会自我修改。
-
你需要编写文件然后编译它。您可能可以使用 shell 命令执行此操作,就像使用 py2exe 一样。
-
@geokavel 变量 self 是写入所有代码的文件的名称,它写入自身并且必须再次运行才能更改输出。
-
想一想,如果你的程序叫做 Strain_0.exe 并且它写入一个名为 Strain_0.py 的文件,它不是自修改的。
标签: python self-modifying