2015-10-14 133 views
-1

我搞砸了自我修改代码的想法,我想用py2exe将文件更改为.exe。我仍然可以让代码自行修改,还是需要将它保留为.py?修改自己为exe文件的Python文件?

自修改代码:

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) 
+3

你需要去学习一些好的ANSI ANSI LISP。 –

+1

我不是一个Python家伙,但是如果你从.exe文件运行这段代码,它不会是“自我修改”,它只会用你提供的代码创建一个新的python文件,除非你也要运行py2exe输出,那么它会自我修改。 – geokavel

+0

你需要编写这个文件然后编译它。你可以用shell命令来做到这一点,就像你使用py2exe一样。 –

回答

0

我假定这只是一个锻炼,但(我不认为我会充实这个答案的话)。如果你使用pyinstaller(不知道py2exe但它可能是相同的想法)来创建该exe文件,它基本上是一个自解压存档,它将提取一个python解释器和源代码到一个临时目录中(可以从中检索一个环境变量)。找到临时目录后,可以对pyinstaller进行同步调用(修改完成后),将临时(已修改)文件重新打包为新的exe文件。

+0

谢谢,我需要知道的所有:) – MoonMoon

+0

没问题,很高兴帮助。 – iLoveTux