**
語法
**
格式:read(size)
在read()方法裏,size表示要從文件中讀取的數據長度,如果沒有指定size或者指定爲“None”就表示讀取文件裏的全部數據。
特別需要注意點:
- read()的讀取機制因訪問文件模式(文本文件模式或二進制模式)不同而異。訪問模式不同,所調用的類就有所不同,那麼它返回的對象也有所不同。這裏最明顯的就是size長度計數單位的區別,下一點作解。
- 在文本文件讀取模式,size的計數是以Unicode字符的個數計數的,在二進制文件讀取模式下,size計數是以字節爲單位計數。
- 每次讀取文件都是從當前指針位置(即上一次的位置)開始讀取數據。
兩種訪問模式的比較
文本文件訪問模式:
有一種真相叫做“有圖有真相”,看下面啦,嘻嘻嘻!
在上面說過的,文本文件訪問模式是以Unicode字符個數計數的。那麼重點來了,Unicode字符技術是咋回事,還是看下面:
1、在純ASCII碼下,字節數=字符串長度=字符個數,因爲每個字符就一個字節。
2、在Unicode下,字節數/2=字符串長度=字符個數,因爲每個字符都是2個字節。
如果沒看懂,建議找找相關資料瞭解一下ASCII碼,Unicode編碼規範還有UTF-8編碼方式。
**對上述讀取文件代碼簡單解釋一下:**以Unicode字符個數計數,即size=2;那麼以上述公式可得字節數爲4,即表示兩個中文字符了,所以輸出內容“你好”。tell()方法返回文件指針的當前位置,以字節數爲單位。
二進制訪問模式:
老規矩,“有圖有真相”,看下面啦,嘻嘻嘻!
其中,decode() 方法以指定的編碼格式解碼 bytes 對象,到這裏相信都明白了,二進制就是以字節碼爲計數單位的。
有不足之處望留言指正
——————END——————
Programmer:柘月十七