2015-10-14 135 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