2009-08-06 72 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

相關問題