![](https://miro.medium.com/fit/c/96/96/1*d72O1D9Zb81oQvQ-DxYkGA.jpeg)
Siddharth Kshirsagar
Follow
8月1日。 2020 – 2 min read
- StringIOとBytesIOは、メモリ上の文字列とバイトデータを操作するメソッドです。
- StringIOは文字列データに、BytesIOはバイナリデータに使用されます。
- このクラスは文字列データを操作するファイルのようなオブジェクトを作成します。
- StringIOとBytesIOクラスは、通常のファイルを模倣する必要があるシナリオで最も有用です。
この場合、データはファイルに書き込まれた後、メモリ(RAM)には保持されません
この場合、コンテンツをファイルに書き込む代わりに、メモリバッファ(RAMの塊)に書き込まれます。
本質的には、BytesIOクラスを使用して書き込むことは、次のことと同じです
space = b""
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
space += b"Hello world"
それでは、なぜio.BytesIO()を定義するのでしょうか。
Ans: Optimization and Performance
変わりやすいメモリーバッファーにデータを読み込むことができる別の方法はありますか?
はい、ファイル a オブジェクトの readinto() メソッドを使用できます。
- ファイルの
readinto()
メソッドを使用すると、事前に割り当てられた任意の配列にデータを書き込むことができます。 - 通常の
read()
readinto()
メソッドは、新しいオブジェクトを割り当てて返すのではなく、既存のバッファの内容を埋めます。 - そのため、余分なメモリの割り当てを行わないために使用することができます。
例:
バイナリデータを操作するために、中間的なコピーをせずに、可変型バッファにバイナリデータを直接読み込みたい場合
。