4

我已经有一段时间遇到这个问题了。如何在 python 中打开文件并继续写入但不覆盖我之前写的内容?

例如:

下面的代码将写入“输出正常”。然后接下来的几行将覆盖它,它只是“完成”

但我想要文件中的“输出正常”“完成”

f = open('out.log', 'w+')
f.write('output is ')
# some work
s = 'OK.'
f.write(s)
f.write('\n')
f.flush()
f.close()
# some other work
f = open('out.log', 'w+')
f.write('done\n')
f.flush()
f.close()

我希望能够每隔一段时间自由地打开和写入它。关闭它。然后一遍又一遍地重复这个过程。

感谢您的帮助:D

4

5 回答 5

12

以追加模式打开文件。如果它不存在,它将被创建,如果它存在,它将在其末尾打开以供进一步写入:

with open('out.log', 'a') as f:
    f.write('output is ')
    # some work
    s = 'OK.'
    f.write(s)
    f.write('\n')

# some other work
with open('out.log', 'a') as f:
    f.write('done\n')
于 2012-11-16T07:57:22.260 回答
2

当您打开文件以在其中附加内容时,只需将“a”作为参数传递。查看文档

f = open('out.log', 'a')
于 2012-11-16T07:57:31.003 回答
2

您需要第二次以附加模式打开文件:

f = open('out.log', 'a')

因为每次以写入模式打开文件时,文件的内容都会被清除。

于 2012-11-16T07:58:04.873 回答
2

第一次写入后,您需要使用f = open('out.log', 'a')将文本附加到文件的内容中。

于 2012-11-16T07:58:11.890 回答
2
with open("test.txt", "a") as myfile:
    myfile.write("appended text")
于 2012-11-16T07:59:39.317 回答