1. 程式人生 > >【轉載】python基礎-檔案讀寫'r' 與 'rb' 和‘r+'與’rb+'區別

【轉載】python基礎-檔案讀寫'r' 與 'rb' 和‘r+'與’rb+'區別

【轉載連結:https://www.cnblogs.com/nulige/p/6128948.html】   一、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'會一直讀取檔案末尾。