将自身修改为exe的Python文件?
我对自我修改代码的想法感到困惑,我想使用py2exe将文件更改为.exe。我是否仍然可以修改代码本身,还是需要将其保留为.py 自修改代码:将自身修改为exe的Python文件?,python,self-modifying,Python,Self Modifying,我对自我修改代码的想法感到困惑,我想使用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
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)
我假设这只是一个练习,但是(我认为我根本不打算充实这个答案)。如果您使用pyinstaller(不确定py2exe,但可能是相同的想法)来生成exe,它基本上是一个自解压存档,它将把python解释器和源代码解压到一个临时目录中(您可以从环境变量中检索)。找到临时目录后,您可以同步调用pyinstaller(修改后),将临时(修改后的)文件重新打包到新的exe中。您需要学习一些好的ol'ANSI LISP。我不是Python高手,但如果您从.exe文件运行此代码,它将不会是“自我修改”,它将使用您提供的代码创建一个新的python文件,除非您也要在输出上运行py2exe,否则它将是自修改的。您可能可以使用shell命令执行此操作,与使用py2exe的方式相同。@geokavel变量self是所有代码都写入的文件名,它会写入自身,并且必须再次运行才能更改输出。请考虑一下,如果您的程序名为train_0.exe,并且它会写入名为train_0.py的文件,谢谢,我只需要知道:)没问题,很高兴它能帮上忙。