課程內(nèi)容
Python入門課程N(yùn)O68課 StringIO與BytesIO
我們通過open方法來打開硬盤上的文件,并獲得一個(gè)文件流對象,然后通過文件流對象對文件進(jìn)行讀寫操作。計(jì)算機(jī)中的存儲設(shè)備按其訪問速度和容量大小,被組織成了下圖所示的金字塔形狀的層次結(jié)構(gòu):
我們讀寫的硬盤文件,存儲在外存儲器中,從圖可看出在硬盤中進(jìn)行數(shù)據(jù)讀寫,遠(yuǎn)慢于在內(nèi)存中進(jìn)行數(shù)據(jù)讀寫。在本節(jié)的內(nèi)容中,要介紹的是StringIO與BytesIO,通過這兩個(gè)模塊可以直接在內(nèi)存中進(jìn)行數(shù)據(jù)讀寫。
StringIO:通過StringIO可以獲取一個(gè)基于內(nèi)存的流對象。StringIO就是在內(nèi)存中對字符串進(jìn)行讀寫操作。構(gòu)造StringIO的方法:StringIO(initial_value='', newline='\n')
參數(shù)initial_value用來傳遞一個(gè)初始值,默認(rèn)為空字符串。newline用來定義換行符,默認(rèn)為'\n'。通過StringIO獲取的內(nèi)存流對象,與通過open方法獲取的文件流對象,都有相同的接口。通過文件流對象的read, write,seek等方法對文件進(jìn)行讀寫操作,同樣也可以通過內(nèi)存流對象的read,write,seek等方法來進(jìn)行數(shù)據(jù)的讀寫操作。此外,StringIO對象還提供了一個(gè)getvalue方法,用來讀取緩沖區(qū)中的全部數(shù)據(jù)。
BytesIO:BytesIO類似于StringIO,區(qū)別在于BytesIO用來在內(nèi)存中對bytes類型進(jìn)行讀寫。 執(zhí)行字符串類型的encode方法,可以轉(zhuǎn)換為bytes類型。執(zhí)行bytes類型的decode方法可以轉(zhuǎn)換為字符串類型。
BytesIO([initial_bytes]):[]表示里面的參數(shù)為可選參數(shù),參數(shù)initial_bytes表示初始化的bytes類型的數(shù)據(jù)。
在對BytesIO對象執(zhí)行g(shù)etbuffer方法時(shí),會返回一個(gè)可讀寫的視圖對象。只要視圖對象存在,就不能對緩沖區(qū)的大小進(jìn)行調(diào)整和關(guān)閉。如需對緩沖區(qū)的大小進(jìn)行調(diào)整或關(guān)閉,可以通過del來刪除該視圖對象。

- 上一篇
Python入門課程N(yùn)O67課 文件的讀寫高級操作
文件的讀寫緩沖區(qū):文件的讀寫緩沖區(qū)對應(yīng)的是內(nèi)存中的一塊緩沖區(qū):在對文件執(zhí)行寫操作時(shí),會先將數(shù)據(jù)寫到這個(gè)緩沖區(qū),緩沖區(qū)寫滿以后再刷新到磁盤。在對文件執(zhí)行讀操作時(shí),會先將文件的一部分?jǐn)?shù)據(jù)預(yù)讀到這塊內(nèi)存緩沖區(qū),然后再從這塊緩沖區(qū)里進(jìn)行讀取。在內(nèi)存中進(jìn)行讀寫遠(yuǎn)快于
- 下一篇
Python入門課程N(yùn)O69課 如何使用json
json的全稱為JavaScript Object Notation,是javascript的對象標(biāo)記語言,用于將javascript對象序列化為JSON格式的字符串。與Python一樣,也是一種解釋型的腳本語言。json數(shù)據(jù)格式:json這種數(shù)據(jù)格式類似于Python中的列表類型和字典類型:由符號[]括起來的數(shù)據(jù)集合,或由花括號