2012-10-21 90 views
0

我正在嘗試編寫一個程序來自動化一個tkinter窗口的程序,所以我試圖用open()函數來打開一個txt文件(可能應該是。 PY應該不會吧),一個程序,使窗口,我想將它寫的代碼是:編寫python程序來編寫python程序

def a_procedure(): 
    window = Tk() 
    #rest of code necessary to make a Tkinter window 

但問題是,當我使用

open() 
textfile.write("def a_procedure()"/ 
"window = Tk()") 

我進入文本文件是:def a_procedure():window = TK()#rest of text

有(一)寫的多條線路的搭配方式 的open() 或(b)一個更好的方式來寫一個程序有一個過程

回答

4

您可以使用多行字符串:

textfile.write(""" 
def a_procedure(): 
    window = Tk() 
""") 

只要確保正常縮進東西。

爲什麼你需要從Python腳本生成Python?

0

嘗試:「高清a_procedure():\ n \ twindow = TK()」

5

您的例子並不表明你將如何改變產生的功能(因爲如果它們都是一樣的你不需要生成它們)。所以我將展示一個函數可以返回一個新函數的另一個例子。

def make_function(first_multiplicand): 
    def multiply(second_multiplicand): 
     return first_multiplicand * second_multiplicand 

    return multiply 

然後你就可以通過不同的量乘以功能:

doubler = make_function(2) 
tripler = make_function(3) 
print doubler(7), tripler(7) 

這樣你就不必寫出一個.py文件,然後import它(如果可以的話它有潛在的問題在任何地方寫出有用的文件,以及要求您通過字符串格式創建Python源代碼,這非常醜陋)。

這也值得看看functools,特別是functools.partial;你可以使用它重寫上述內容,如下所示:

import functools 

def make_function(first_multiplicand): 
    def multiply(first, second): 
     return first * second 
    return functools.partial(multiply, first_multiplicand)