在循环中写入文本文件而不替换

时间:2013-11-03 23:44:10

标签: python file-io while-loop

这个问题的答案在评论中有所下降。 所以对于学校我写了这个程序,询问有关一个人带给局域网的信息。这将在循环中发生,因此它将询问每个参与者,直到参与者编号达到256.我添加了一些代码,因此某些行将被写入文本文件。 我的问题是,每个参与者,所以每次循环从头开始,文本文件将被替换。我似乎无法找到在哪里寻找解决方案。 这是我的代码中的一些行:

uid=0
while uid <= 256:
     fo = open('userID.txt','w')
     print("\nUserID: ",uid)
     fo.write("\nUserID: " + str(uid))
fo.close()
input("")

现在,我的文本文件将显示我关闭程序时显示的uid(用户ID)。 所以1或5或200,但我想要的是它显示一切,直到我关闭程序: 0 1 2 3 4 等等... 可以这么说,加强而不是替换。

写一个文本文件方面是我为了好玩而做的事情。我已经递交了该程序,但仍想解决我的问题。我是一名初学程序员,这是我第一次编程。

2 个答案:

答案 0 :(得分:1)

不要在循环中重新打开文件。每次使用'w'打开文件时都会覆盖该文件。

将fo.close()放在while循环之外,你会没事的!

uid=0
fo = open('userID.txt','w')
while uid <= 256:
    print("\nUserID: ",uid)
    fo.write("\nUserID: " + str(uid))
    input("")
fo.close()

如另一个答案中所建议的那样,您可以使用'a'写入模式(如果您需要读取和写入,则使用'a +'),但请注意,每次运行时都会将新数据附加到文件中程序,因此每个程序运行结果将一个接一个地记录下来。

答案 1 :(得分:1)

您可以使用'a'(追加)模式而不是'w'打开文件,或者只在循环外打开一次。 您也可以使用fo.flush()立即将缓冲数据写入文件

more about buffering