在python中将变量覆盖到文件

时间:2014-05-29 16:40:49

标签: python file loops

我定义了一个生成一些名字的函数,我从循环运行:

output = open('/tmp/NameGen-output.txt', 'w')
while True:
     var = NameGen(name)
      .
      .
      .
       if sth:
            output.write(var)
       elif other:
            output.write(var)
            break
       else:
            break
output.close()

更新

第一次迭代,NameGen-output.txt的内容:

a
b
c

第二次迭代:

a
b
c
d
e

因此,如果我覆盖它,第二次迭代就是:

d
e

我要问的是:

如您所见,var等于NameGen(),并且对于每次迭代,var的内容都写入NameGen-output.txt,但我想覆盖NameGen()NameGen-output.txt的每次迭代的输出没有附加。

你能帮助我吗?

谢谢

2 个答案:

答案 0 :(得分:4)

您可以截断现有文件而不打开和关闭它,并刷新以确保将其写入:

output = open('/tmp/NameGen-output.txt', 'w')
while True:
    var = NameGen()
    .
    .
    .
    if not sth and not other:
         break
    else:
         output.flush()
         output.seek(0)
         output.truncate()
         output.write(var)
         output.flush()
         output.write(var)

         if other:
             break


output.close()

答案 1 :(得分:3)

您可以在循环内移动文件打开(注意:首选使用with上下文管理器):

while True:
    var = NameGen()
    ...
    with open('/tmp/NameGen-output.txt', 'w') as output:
        output.write(var)
    ...
...