python基礎-檔案讀寫'r' 和 'rb'區別

來源:互聯網
上載者:User

標籤:總結   平台   自動   檔案讀寫   mil   讀寫   二進位   window   檔案   

一、Python檔案讀寫的幾種模式:

r,rb,w,wb 那麼在讀寫檔案時,有無b標識的的主要區別在哪裡呢?

 

1、檔案使用方式標識

‘r‘:預設值,表示從檔案讀取資料。
‘w‘:表示要向檔案寫入資料,並截斷以前的內容
‘a‘:表示要向檔案寫入資料,添加到當前內容尾部
‘r+‘:表示對檔案進行可讀寫操作(刪除以前的所有資料)
‘r+a‘:表示對檔案可進行讀寫操作(添加到當前檔案尾部)
‘b‘:表示要讀寫位元據

 

2、讀檔案 進行讀檔案操作時,直到讀到文檔結束符(EOF)才算讀取到檔案最後,Python會認為位元組\x1A(26)轉換成的字元為文檔結束符(EOF),

      故使用‘r‘進行讀取二進位檔案時,可能會出現文檔讀取不全的現象。

 

樣本:
     二進位檔案中存在如下從低位向高位排列的資料:7F 32 1A 2F 3D 2C 12 2E 76
     如果使用‘r‘進行讀取,則讀到第三個位元組,即認為檔案結束。
     如果使用‘rb‘按照二進位位進行讀取的,不會將讀取的位元組轉換成字元,從而避免了上面的錯誤。


解決方案:
     二進位檔案就用二進位方法讀取‘rb‘

  總結:
     使用‘r‘的時候,如果碰到‘0x1A‘,就視為檔案結束,就是EOF。使用‘rb‘則不存在這個問題,


即:如果你用二進位寫入再用檔案讀出的話,如果其中存在‘0x1A‘,就只會讀出檔案的一部分,
使用‘rb‘會一直讀取檔案末尾。


3、寫檔案 對於字串x=‘abc\ndef‘,我們可用len(x)得到它的長度為7,\n我們稱之為分行符號,實際上是0x0A。當我們用‘w‘即文本方式寫的時候,在windows平台上會自動將‘0x0A‘變成兩個字元‘0x0D‘,‘0x0A‘,即檔案長度實際上變成8。當用‘r‘文本方式讀取時,又自動的轉換成原來的分行符號。 如果換成‘wb‘二進位方式來寫的話,則會保持一個字元不變,讀取的時候也是原樣讀取。 所以如果用文本方式寫入,用二進位方式讀取的話,就要考慮這多出的一個位元組了。‘0x0D‘也稱斷行符號符。 Linux下不會變,因為linux只使用‘0X0A‘來表示換行。

 

python基礎-檔案讀寫'r' 和 'rb'區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.