2
根据开放函数 的documentation'a'表示追加,在某些Unix系统上这意味着所有的写操作都附加到文件的末尾,而不管当前的搜索位置如何。“a +”模式是否允许在所有系统上随机访问文件?
'a +'允许随机写入文件中任何位置的所有系统上?
根据开放函数 的documentation'a'表示追加,在某些Unix系统上这意味着所有的写操作都附加到文件的末尾,而不管当前的搜索位置如何。“a +”模式是否允许在所有系统上随机访问文件?
'a +'允许随机写入文件中任何位置的所有系统上?
在我的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 +'模式打开的文件进行写操作时,将始终追加到文件末尾。
谢谢,似乎我需要检查文件是否存在,并打开不同的文件模式:( – 2009-08-06 14:31:52