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