StringIO
StringIO顧名思義就是在內(nèi)存中讀寫(xiě)str把夸。
要把str寫(xiě)入StringIO而线,我們需要先創(chuàng)建一個(gè)StringIO,然后扎即,像文件一樣寫(xiě)入即可:
>>> from io import StringIO
>>> f = StringIO()
>>> f.write('hello')
5
>>> f.write(' ')
1
>>> f.write('world!')
6
>>> print(f.getvalue())
hello world!
`
要讀取StringIO,可以用一個(gè)str初始化StringIO况凉,然后谚鄙,像讀文件一樣讀取
BytesIO
StringIO操作的只能是str,如果要操作二進(jìn)制數(shù)據(jù)刁绒,就需要使用BytesIO闷营。
BytesIO實(shí)現(xiàn)了在內(nèi)存中讀寫(xiě)bytes,我們創(chuàng)建一個(gè)BytesIO,然后寫(xiě)入一些bytes:
>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'
請(qǐng)注意傻盟,寫(xiě)入的不是str速蕊,而是經(jīng)過(guò)UTF-8編碼的bytes。
和StringIO類(lèi)似娘赴,可以用一個(gè)bytes初始化BytesIO规哲,然后,像讀文件一樣讀确瘫怼:
>>> from io import StringIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'