2012-10-21 47 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)