PythonでStringIOを使用しファイルを読み取る

スポンサーリンク

PythonでStringIOを使用しファイルを読み取ってみます。

StringIOは組み込みモジュールで、ファイルのようなオブジェクト(これをメモリファイルまたは文字列バッファとも呼ぶ)を生成し、ファイルと同じように読み書きすることができます。

なお、StringIOを使用する場合には、Pythonの標準ライブラリであるioモジュールからio.StringIOとしてインポートする必要があります。ちなみに「I/O」とは情報の入力(Input)と結果の出力(Output)の処理を総称して「I/O」と呼ばれています。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■ファイルを用意する

StringIOを使用しファイルを読み取ってみますが、その前に読み取るファイルを用意します。

今回は「C:\Users\user_\test(フォルダパス)」内に「mountain.png」というpng形式の画像を用意しました。この画像は著作権フリーの画像をお借りしました(https://pixabay.com/ja/)。

■StringIOを使用しファイルを読み取る

読み取るファイルの用意ができましたので、StringIOを使用しファイルを読み取るスクリプトを書いていきます。

■コード

import io

file = io.open(r"C:\Users\user_\test\mountain.png","rb",buffering=0)

print(file.read())

今回はimportでioモジュールを呼び出します。その後、fileという変数を定義し、その中でio.open()を用います。括弧内には、第1の引数,パラメータとして今回用意した画像ファイルの名前と置かれている場所を渡します。次に第2の引数,パラメータとして’rb’と指定しバイナリファイルを読み込みます。そして、第3の引数,パラメータとしてファイルの読み書き時にバッファリングを使用するかどうかを指定します。今回は値を「0」 とし指定されたファイルを開くときにバッファが使用されないようにします。バッファリングは、一時的にバッファメモリなどにデータを蓄え、データ処理にかかる時間の違いを調整することができます。これで、ファイルをバイトに変換でき、変換されたファイルはfile変数に格納されます。

格納後、file.read()でfile変数内のデータを読み取り、print()で出力します。

■実行・検証

このスクリプトを「io_data.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、StringIOを使用しファイルを読み取ることができ、読み取ったファイル内のデータをprint()で出力させてみると、バイト型に変換していることが確認できました。

コメント

タイトルとURLをコピーしました