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

2021-07-27 13:18:53 字數 1055 閱讀 2803

一、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 區別

一 python檔案讀寫的幾種模式 r,rb,w,wb 那麼在讀寫檔案時,有無b標識的的主要區別在 呢?1 檔案使用方式標識 r 預設值,表示從檔案讀取資料。w 表示要向檔案寫入資料,並截斷以前的內容 a 表示要向檔案寫入資料,新增到當前內容尾部 r 表示對檔案進行可讀寫操作 刪除以前的所有資料 r...

檔案讀寫 r 和 rb 區別

不管何種語言在進行檔案讀寫時,大家都知道有以下模式 r,rb,w,wb 那麼在讀寫檔案時,有無b標識的的主要區別在 呢?1.檔案使用方式標識2.讀檔案進行讀檔案操作時,直到讀到文件結束符 eof 才算讀取到檔案最後,python會認為位元組 x1a 26 轉換成的字元為文件結束符 eof 故使用 r...

檔案讀寫 r 和 rb 區別

r,rb,w,wb 那麼在讀寫檔案時,有無b標識的的主要區別在 呢?1.檔案使用方式標識2.讀檔案進行讀檔案操作時,直到讀到文件結束符 eof 才算讀取到檔案最後,python會認為位元組 x1a 26 轉換成的字元為文件結束符 eof 故使用 r 進行讀取二進位制檔案時,可能會出現文件讀取不全的現...