打开要追加的文件

时间:2011-07-29 20:25:25

标签: python

我刚才有一个过去的想法,并想出了更好的地方,然后就在这里。出于好奇,有没有人知道是否打开一个文件进行追加,如下所示:

file_name = "abc"
file_handle = open(file_name,"a")

基本上与打开文件进行写作和寻找结尾相同:<​​/ p>

file_name = "abc"
file_handle = open(file_name,"w")
file_handle.seek(0,2) # 0 for offset, 2 for end-of-file

我只是想知道是否打开一个append文件实际上是在做第二个块,打开写入,然后在文件的后面搜索到文件的结尾。

4 个答案:

答案 0 :(得分:15)

在我的终端玩了一下后,我可以说使用python 2.7.1在ubuntu linux 11.04上有什么不同。

打开时,用'w'打开(即删除内容)文件。换句话说,只需使用open('file.txt', 'w')打开文件并退出就会留下空文件。

以'a'打开会使文件内容保持不变。因此,以open('file.txt', 'a')打开并退出会使文件保持不变。

这也适用于open的更新选项。命令open('file.txt', 'w+')将保留空文件,而命令open('file.txt', 'r+')open('file.txt', 'a+')将保留未更改的文件。

选项'r +'和'a +'之间的区别是其他人建议的行为。选项'r +'允许您在文件中的任何位置写入,而'a +'强制所有写入到文件末尾,无论您在何处设置文件的当前位置。

如果你想更多地研究它,根据python documentation,open函数接受类似于C的stdio the fopen function的模式。

答案 1 :(得分:2)

不是真的。使用附加强制任何写入到文件末尾,您可以通过写入来寻找其他位置。

答案 2 :(得分:2)

“W”将删除内容数据,然后寻找最终位置。所以,你将以一个空文件结束,指针位于BOF而不是EOF。使用“A”保存旧数据。

答案 3 :(得分:1)

这取决于你正在进行的系统;打开带有append标志的文件通常意味着无论写指针位置如何,您都要在文件末尾写入。换句话说,它可能意味着您的操作系统必须在每次写入之前执行搜索到文件的末尾,或者只是在打开后搜索指向结尾的指针。您可以轻松地检查它在您的环境下的工作方式,但唯一可靠的行为是在打开后寻求结束。

编辑:正如其他人所指出的,w标志有效地截断了文件。如果您想在不删除当前内容的情况下打开它进行更新,则必须使用r+标记(但是允许读取,而a则不允许)。