2014-08-28 177 views
0

在Windows中编写我的python 3.3程序,我遇到了一个小问题。我正在试图写一些指令到一个文件,以便程序执行。但是,每次我file.write()下一行时,它会替换上一行。我希望能够尽可能多地写入这个文件。注意:使用“\ n”似乎不起作用,因为您不知道将会有多少行。请帮忙!这里是我的代码(即一个循环,我不运行这个多次):Python如何继续写入文件而不擦除已存在的内容

menu = 0 
while menu != None: 
    menu = lipgui.choicebox("Select an option:", choices=["choice1", "choice2", "choice3"]) 
    file = open("file.txt", "w") 
    if menu == "choice1": 
     text_to_write = lipgui.enterbox("Text to write:") 
     file.write(text_to_write) 
+0

也因为它是python 3.3,你应该使用open('file.txt','w')作为文件而不是直接打开 – user3012759 2014-08-28 16:17:21

+0

@ user3012759该功能是在Python 2.5中引入的 – Tshepang 2014-09-06 04:32:46

回答

1

每当你打开文件进行写它被删除(截断)时间。打开文件替代,或打开文件只需一次并保持打开状态。

要打开文件进行追加,使用a代替w的模式:

while menu != None: 
    menu = lipgui.choicebox("Select an option:", choices=["choice1", "choice2", "choice3"]) 
    file = open("file.txt", "a") 
    if menu == "choice1": 
     text_to_write = lipgui.enterbox("Text to write:") 
     file.write(text_to_write) 

或打开文件循环外:

file = open("file.txt", "w") 

while menu != None: 
    menu = lipgui.choicebox("Select an option:", choices=["choice1", "choice2", "choice3"]) 
    if menu == "choice1": 
     text_to_write = lipgui.enterbox("Text to write:") 
     file.write(text_to_write) 

或只有一次在第一时间你需要它:

file = None 

while menu != None: 
    menu = lipgui.choicebox("Select an option:", choices=["choice1", "choice2", "choice3"]) 
    if file is None: 
     file = open("file.txt", "w") 
    if menu == "choice1": 
     text_to_write = lipgui.enterbox("Text to write:") 
     file.write(text_to_write) 
+0

但是我没有重新打开文件。我只是写信给它! – 2014-08-28 15:54:08

+0

@LukeDinkler:然后向我们展示您的代码;如果行被替换,那么你正在做一些不寻常的事情。 – 2014-08-28 15:56:07

+0

@LukeDinkler:你**正在重新打开文件。每次调用open()时。 – 2014-08-28 16:10:06

相关问题