2009-08-06 64 views

回答

2

在我的Linux系统中,使用Python 2.5.2写入到'a +'打开的文件似乎始终追加到最后,无论当前的搜索位置如何。

下面是一个例子:

import os 

if __name__ == "__main__": 

    f = open("test", "w") 
    f.write("Hello") 
    f.close() 

    f = open("test", "a+") 
    f.seek(0, os.SEEK_SET) 
    f.write("Goodbye") 
    f.close() 

在我的系统(事件虽然我seeked到文件的开头),这导致文件 “测试” 包含:

HelloGoodbye

python文档说模式参数和stdio是一样的。

fopen() Linux手册页面不说,(强调):

打开文件以追加模式(如 的第一个字符的模式)导致 所有后续的写操作 如如果前面由

fseek(stream,0,SEEK_END); 

呼叫发生此流在结束文件, 。

我的标准输入输出参考说,附加一个“+”到模式(即“A +”)表示该流被打开输入和输出。但是,在切换输入和输出之前,必须进行调用以显式设置文件位置。

因此,添加'+'并不会改变这样一个事实,即在某些系统上为以'a'或'a +'模式打开的文件进行写操作时,将始终追加到文件末尾。

+0

谢谢,似乎我需要检查文件是否存在,并打开不同的文件模式:( – 2009-08-06 14:31:52

相关问题