今天學習IO模塊的使用留夜,主要分為StringIO的使用和BytesIO的使用~
1.StringIO的使用
# 類似文件的緩沖區(qū)
from io import StringIO
cache_file = StringIO()
print(cache_file.write('hello world')) # 11
print(cache_file.seek(0)) # 0
print(cache_file.read()) # hello world
print(cache_file.close()) # 釋放緩沖區(qū)
StringIO經(jīng)常被用來作字符串的緩存,因為StringIO的一些接口和文件操作是一致的,也就是說同樣的代碼烫映,可以同時當成文件操作或者StringIO操作让簿;
要讀取StringIO,可以用一個str初始化StringIO漠畜,然后像讀文件一樣讀缺宜;
當使用read()方法讀取寫入的內容時憔狞,則需要先用seek()方法讓指針移動到最開始的位置蝴悉,否則讀取不到內容(寫入后指針在最末尾);
getvalue()方法:直接獲得寫入后的str瘾敢;
close()方法:在關閉文件的緩沖區(qū)之后就不能再進行讀寫操作了拍冠;
2.BytesIO的使用
# 類似文件的緩沖區(qū)
from io import BytesIO
bytes_file = BytesIO()
bytes_file.write(b'hello world')
bytes_file.seek(0)
print(bytes_file.read()) # b'hello world'
bytes_file.close()
StringIO操作的只能是str,如果要操作二進制數(shù)據(jù)簇抵,就需要使用BytesIO庆杜;
BytesIO實現(xiàn)了在內存中讀寫bytes,寫入的不是str正压,而是經(jīng)過UTF-8編碼的bytes欣福;
要讀取BytesIO,可以用一個bytes初始化BytesIO焦履,然后像讀文件一樣讀韧厝啊雏逾;