我定义了一个生成一些名字的函数,我从循环运行:
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
的每次迭代的输出没有附加。
谢谢
答案 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)
...
...