Day24:IO模組的使用

書和咖啡發表於2019-02-26

今天學習IO模組的使用,主要分為StringIO的使用和BytesIO的使用~

1.StringIO的使用

# 類似檔案的緩衝區
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())  # 釋放緩衝區
  • StringIO經常被用來作字串的快取,因為StringIO的一些介面和檔案操作是一致的,也就是說同樣的程式碼,可以同時當成檔案操作或者StringIO操作;

  • 要讀取StringIO,可以用一個str初始化StringIO,然後像讀檔案一樣讀取;

  • 當使用read()方法讀取寫入的內容時,則需要先用seek()方法讓指標移動到最開始的位置,否則讀取不到內容(寫入後指標在最末尾);

  • getvalue()方法:直接獲得寫入後的str;

  • close()方法:在關閉檔案的緩衝區之後就不能再進行讀寫操作了;

2.BytesIO的使用

# 類似檔案的緩衝區
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,如果要操作二進位制資料,就需要使用BytesIO;

  • BytesIO實現了在記憶體中讀寫bytes,寫入的不是str,而是經過UTF-8編碼的bytes;

  • 要讀取BytesIO,可以用一個bytes初始化BytesIO,然後像讀檔案一樣讀取;

相關文章