关于python:使用”with open()as file”方法,如何多次写入?

Using “with open() as file” method, how to write more than once?

本问题已经有最佳答案,请猛点这里访问。

通常,为了写一个文件,我会做以下操作:

1
2
the_file = open("somefile.txt","wb")
the_file.write("telperion")

但出于某种原因,伊普敦(Jupyter)没有写这些文件。这很奇怪,但我唯一能让它工作的方法就是这样写:

1
2
3
4
5
6
7
with open('somefile.txt',"wb") as the_file:
    the_file.write("durin's day
"
)

with open('somefile.txt',"wb") as the_file:
    the_file.write("legolas
"
)

但很明显,它将重新创建文件对象并重写它。

为什么第一个块中的代码不起作用?第二个街区怎么走?


w标志表示"打开进行写入和截断文件";您可能希望使用a标志打开文件,即"打开文件进行追加"。

另外,您似乎正在使用python 2。您不应该使用b标志,除非您编写的是二进制文件而不是纯文本内容。在Python3中,您的代码将产生一个错误。

因此:

1
2
3
4
5
6
7
with open('somefile.txt', 'a') as the_file:
    the_file.write("durin's day
"
)

with open('somefile.txt', 'a') as the_file:
    the_file.write("legolas
"
)

对于使用filehandle = open('file', 'w')的文件中没有显示的输入,这是因为文件输出是缓冲的——一次只写入一个更大的块。为了确保文件在单元末尾刷新,可以使用filehandle.flush()作为最后一条语句。