Python檔案讀寫、StringIO和BytesIO
輸入輸出是相對的,要考慮具體的物件是什麼。
由於CPU和記憶體的速度遠遠高於外設的速度,所以,在IO程式設計中,就存在速度嚴重不匹配的問題。舉個例子來說,比如要把100M的資料寫入磁碟,CPU輸出100M的資料只需要0.01秒,可是磁碟要接收這100M資料可能需要10秒,怎麼辦呢?有兩種辦法:
第一種是CPU等著,也就是程式暫停執行後續程式碼,等100M的資料在10秒後寫入磁碟,再接著往下執行,這種模式稱為同步IO。
另一種方法是CPU不等待,只是告訴磁碟,“您老慢慢寫,不著急,我接著幹別的事去了”,於是,後續程式碼可以立刻接著執行,這種模式稱為非同步IO。
同步和非同步的區別就在於是否等待IO執行的結果。
使用非同步IO來編寫程式效能會遠遠高於同步IO,但是非同步IO的缺點是程式設計模型複雜。
回撥模式:服務員跑過來找你
輪詢模式:發簡訊通知
操作IO的能力都是由作業系統提供的,每一種程式語言都會把作業系統提供的低階C介面封裝起來方便使用,Python也不例外。
讀寫檔案是最常見的IO操作。Python內建了讀寫檔案的函式,用法和C是相容的。
讀寫檔案前,我們先必須瞭解一下,在磁碟上讀寫檔案的功能都是由作業系統提供的,現代作業系統不允許普通的程式直接操作磁碟,所以,讀寫檔案就是請求作業系統開啟一個檔案物件(通常稱為檔案描述符),然後,通過作業系統提供的介面從這個檔案物件中讀取資料(讀檔案),或者把資料寫入這個檔案物件(寫檔案)。
2 讀檔案
使用Python內建的open()函式,傳入檔名和標示符
如果檔案不存在,open()函式就會丟擲一個IOError的錯誤,並且給出錯誤碼和詳細的資訊告訴你檔案不存在
如果檔案開啟成功,接下來,呼叫read()方法可以一次讀取檔案的全部內容,Python把內容讀到記憶體,用一個str物件表示
最後一步是呼叫close()方法關閉檔案。檔案使用完畢後必須關閉,因為檔案物件會佔用作業系統的資源,並且作業系統同一時間能開啟的檔案數量也是有限的
由於檔案讀寫時都有可能產生IOError(輸入/輸出操作失敗),一旦出錯,後面的f.close()就不會呼叫。所以,為了保證無論是否出錯都能正確地關閉檔案,我們可以使用try ... finally來實現:
注:
Python引入了with語句來自動幫我們呼叫close()方法:
4 StringIO和BytesIO
很多時候,資料讀寫不一定是檔案,也可以在記憶體中讀寫。StringIO就是在記憶體中讀寫str。
要把str寫入StringIO,我們需要先建立一個StringIO,然後,像檔案一樣寫入即可:
getvalue()方法用於獲得寫入後的str
要讀取StringIO,可以用一個str初始化StringIO,然後,像讀檔案一樣讀取:
StringIO操作的只能是str,如果要操作二進位制資料,就需要使用BytesIO
BytesIO實現了在記憶體中讀寫bytes,我們建立一個BytesIO,然後寫入一些bytes:
注意,寫入的不是str,而是經過UTF-8編碼的bytes。
和StringIO類似,可以用一個bytes初始化BytesIO,然後,像讀檔案一樣讀取:
相關文章
- Python 讀寫檔案Python
- Python——檔案讀寫Python
- 「Python」:檔案讀寫Python
- python檔案建立、讀取和寫入Python
- Python 檔案讀寫(Python IO)Python
- python讀寫excel檔案PythonExcel
- python檔案讀寫操作Python
- Python中檔案的讀寫、寫讀和追加寫讀三種模式的特點Python模式
- Python中的檔案讀寫Python
- Python:讀寫檔案(I/O) | 組織檔案Python
- python config配置檔案的讀寫Python
- Python之檔案讀寫小練Python
- python學習之讀寫檔案Python
- Python檔案讀寫--錯誤一Python
- Python 簡明教程 --- 24,Python 檔案讀寫Python
- Python中的檔案的讀寫操作Python
- Python中讀寫Parquet檔案的方法Python
- Python讀寫EXCEL檔案常用方法大全PythonExcel
- C#讀取文字檔案和寫文字檔案C#
- 如何讀取和寫入JSON檔案JSON
- csv檔案的寫入和讀取
- Python讀寫檔案你真的瞭解嗎?Python
- Python常見檔案讀寫方法有哪些?Python
- python讀寫excel檔案簡單應用PythonExcel
- python檔案無法讀寫怎麼辦Python
- Python中的檔案讀寫-實際操作Python
- (Python基礎教程之十二)Python讀寫CSV檔案Python
- 檔案排版(文字檔案讀寫)
- Golang 讀、寫檔案Golang
- keras讀寫檔案Keras
- 檔案的讀寫
- python opencv轉換bytesioPythonOpenCV
- 【python系統學習17】python中的檔案讀寫Python
- Python 3 學習筆記之——鍵盤輸入和讀寫檔案Python筆記
- C++讀寫檔案C++
- 普通檔案的讀寫
- C++檔案讀寫C++
- VBA建立文字檔案、讀寫文字檔案