Python小記 —— 文件讀寫操作裏read()方法的深究

**

語法

**
格式:read(size)
在read()方法裏,size表示要從文件中讀取的數據長度,如果沒有指定size或者指定爲“None”就表示讀取文件裏的全部數據。

特別需要注意點:

  1. read()的讀取機制因訪問文件模式(文本文件模式或二進制模式)不同而異。訪問模式不同,所調用的類就有所不同,那麼它返回的對象也有所不同。這裏最明顯的就是size長度計數單位的區別,下一點作解。
  2. 在文本文件讀取模式,size的計數是以Unicode字符的個數計數的,在二進制文件讀取模式下,size計數是以字節爲單位計數。
  3. 每次讀取文件都是從當前指針位置(即上一次的位置)開始讀取數據。

兩種訪問模式的比較

文本文件訪問模式:
有一種真相叫做“有圖有真相”,看下面啦,嘻嘻嘻!
文本文件訪問模式
在上面說過的,文本文件訪問模式是以Unicode字符個數計數的。那麼重點來了,Unicode字符技術是咋回事,還是看下面:

1、在純ASCII碼下,字節數=字符串長度=字符個數,因爲每個字符就一個字節。
2、在Unicode下,字節數/2=字符串長度=字符個數,因爲每個字符都是2個字節。

如果沒看懂,建議找找相關資料瞭解一下ASCII碼,Unicode編碼規範還有UTF-8編碼方式。
**對上述讀取文件代碼簡單解釋一下:**以Unicode字符個數計數,即size=2;那麼以上述公式可得字節數爲4,即表示兩個中文字符了,所以輸出內容“你好”。tell()方法返回文件指針的當前位置,以字節數爲單位。

二進制訪問模式:
老規矩,“有圖有真相”,看下面啦,嘻嘻嘻!
二進制訪問模式
其中,decode() 方法以指定的編碼格式解碼 bytes 對象,到這裏相信都明白了,二進制就是以字節碼爲計數單位的。

有不足之處望留言指正

——————END——————
Programmer:柘月十七

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章