python文件讀寫r r+ w w+ a a+ 的區別,光標定位seek的作用。

最近有朋友剛學python 問我一個關於 r+ 是否可以對文件內容覆蓋的問題,所以就大致整理了一下,如果有啥差異,可以指出,多謝指導

  • 1、python 中 r 是隻讀模式,文件必須是已經存在的否則會報 no such file or directory 錯誤
  • 2、r+ 是讀寫模式,可讀可寫,寫入是在末尾追加,和r的相同之處是:文件必須是已存在的。而且讀寫不分先後順序。有一種特殊情況,如果用seek()定位光標的位置,寫入的字符多長就會覆蓋光標之後的內容(覆蓋的內容和寫入的內容長度一直),utf-8 中一個漢字是3個字節,所以seek()定位必須是3的倍數,否則會出現亂碼。
  • 3、w 只讀模式,如果文件不存在,默認創建一個新文件,存在,會先清空文件,在寫入文件,而且只能寫入,等同於覆蓋
  • 4、w+ 讀寫模式,如果文件不存在,默認創建一個新文件,存在,會直接覆蓋文件中的內容
  • 5、a 追加模式,如果文件不存在,創建一個新文件,只讀,默認在文件最後追加內容,不能讀。
  • 6、a+ 讀寫追加,如果文件不存在,則創建一個新文件,可讀可寫,默認在文件最後開始寫入內容,即追加,因爲默認光標在最後,所以正常讀是沒有內容的,可以用seek()定位光標進行讀取,使用過seek()後,如果想繼續在最後追加必須把光標定位到最後
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章