檔案開啟模式 w+ r+ a+ 區別和辨析
阿新 • • 發佈:2019-01-23
w+ 開啟檔案並讀寫 1. 檔案存在,則清空(也即寫入空); 2. 檔案不存在,則建立檔案 ; 3. 檔案流定位到開始位置, 所以read() 會得到空。
r+ 開啟檔案並讀寫 1. 檔案存在,開啟檔案,檔案指標定位到檔案開始位置; 2. 檔案不存在, 則報錯檔案不存在。
a+ 開啟檔案並讀添 1. 檔案存在,開啟檔案,檔案指標定位到檔案開始位置,但不清空;2. 檔案不存在,建立檔案;3. 開啟後讀取時,在檔案開頭位置,4. 寫入時,新增到文章末尾,並且指標位於新增後的末尾,所以再次讀取會亂碼。
另外,
1. w 開啟檔案寫入,也會清空檔案,如果使用read(),則報錯;a 開啟檔案新增,資料流新增到檔案末尾,而不是w模式的清空後新增。
2. b可以附加到上述的字母后,形成rb, rb+, wb等等模式,針對二進位制檔案,比如exe, elf, jpeg格式的檔案,進行檔案操作; 在unix 型別的系統上,text格式與二進位制的處理相同,但是非unix型別的系統上,換行格式不同,所以需要用加b模式來在指定是否是二進位制。
reference:
http://man7.org/linux/man-pages/man3/fopen.3.html
http://stackoverflow.com/questions/16208206/confused-by-python-file-mode-w
http://www.cnblogs.com/operaculus/p/5680850.html