【发布时间】:2012-12-22 13:00:50
【问题描述】:
我有以下功能:
def save(msg):
with gzip.open("ircbot.log.gz", "ab") as f:
f.write(msg+'\n')
f.close()
return "Succesfully logged: "+msg
我想将每个味精添加到 .log 文件中,但它不起作用,只保存第一个味精。
例如在调用这些函数之后:
save('first')
save('second')
save('third')
.log 文件只包含“first”。
对于简单的 .txt 文件,它可以正常工作。 Gzip 不支持附加到文件?
【问题讨论】:
-
注意,当使用文件作为上下文管理器时,您不需要/不应该调用
close。 -
我无法重现这个。当我运行您的函数时(在修复第一行中明显的语法错误之后),我得到了完全期望的行为。语法错误表明这不是您的实际代码。
-
我只复制了函数逻辑。我添加了函数名来演示如何调用它,这就是我忘记 ':' 的原因。
-
@delnan 调用 GzipFile 对象的 close() 方法不会关闭 fileobj,... --python.org;所以在这里它实际上并不重要