
328
|
第 10 章 檔案與文字作業
記憶體內部的「檔案」:io.StringIO 和
io.BytesIO
你可以撰寫提供你所需方法的 Python 類別來實作類檔案物件(file-like
objects)。如果你想要的只是資料留存在記憶體中,而非在作業系統所見
的檔案上,就用
io
模組的類別
StringIO
或
BytesIO
。它們之間的差異在
於,
StringIO
的實體是文字模式的「檔案」,所以讀取或寫入會消耗或產生
Unicode 字串,而
BytesIO
的實體是二進位的「檔案」,所以讀取或寫入會
消耗或產生 bytestrings(位元組字串)。
實體化其中任一個類別時,你可以選擇性地傳入一個字串引數,分別是
Unicode 或 bytes,來用作該「檔案」的初始內容。兩者中任一個類別的實
體
f
,除了「檔案」的方法,還提供一個額外的方法:
getvalue f.getvalue()
將
f
目前的資料內容回傳為一個字串(文字的或位元組的)。你無法在呼
叫
f.close
之後呼叫
f.getvalue
:
close
會釋放
f
內部所維護的緩衝區,而
getvalue
需要回傳該緩衝區作為結果。
壓縮檔
儲存空間和傳輸頻寬越來越便宜與充沛,但在許多情況中,你可以藉由壓
縮(compression),花費一些額外的計算成本來節省這種資源。計算能力
變便宜且充裕的速度甚至比其他的某些資源(例如頻寬)還要快,所以壓
縮受歡迎的程度持續增長。Python 能讓你的程式輕易地支援壓縮,因為
Python 標準程式庫含有數個壓縮專用的模組。 ...