概述
數據讀寫不必定是文件,也可在內存中讀寫
在內存中讀寫可分爲兩種:
1) 讀寫字符(StringIO),其操做的是str
2) 字節讀寫(BytesIO),其操做的二進制數據編碼
StringIO
StringIO就是在內存中讀寫str
要把str寫入StringIO,需先建立一個StringIO,而後像文件同樣寫入便可
要讀取StringIO,能夠用一個str初始化StringIO,而後像讀文件同樣讀取spa
實例code
from io import StringIO f_w = StringIO() f_w.write('hello') f_w.write(' ') f_w.write('world!') print(f_w.getvalue()) #getvalue()方法用於得到寫入後的str #output --> hello world! f_r = StringIO('Hello!\nHi!\nGoodbye!') while True: s = f_r.readline() #readline()方法從StringIO中讀取str if s == '': break print(s.strip())
BytesIOblog
BytesIO就是在內存中讀寫bytes
要把bytes寫入BytesIO,需先建立一個BytesIO,而後像文件同樣寫入便可
要讀取BytesIO,能夠用一個bytes初始化BytesIO,而後像讀文件同樣讀取ip
實例內存
from io import BytesIO f_w = BytesIO() f_w.write('中文'.encode('utf-8')) #寫入的不是str,而是通過UTF-8編碼的bytes print(f_w.getvalue()) #getvalue()方法用於得到寫入後的bytes #output --> b'\xe4\xb8\xad\xe6\x96\x87' f_r = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87') print(f_r.read()) #output --> b'\xe4\xb8\xad\xe6\x96\x87'