Python PR

【Python】ストリームを使ってみる

記事内に商品プロモーションを含む場合があります

この記事では、Pythonでストリームを扱う方法を解説します。

ストリームとは?

ストリームとは、データが出入りする対象(メモリやファイル、ネットワークなど)をプログラムで扱えるように抽象化したもの。

Pythonでストリームを扱うには io モジュール、または open() を使います。

ストリームの種類

ストリームには主に以下の3つがあります。

  • テキスト I/O
  • バイナリ I/O
  • raw I/O

これらのストリームは汎用的なカテゴリでそれぞれ様々なストレージが利用されます。

ストリームの他に「file object」や「file-like オブジェクト」と呼ばれる

テキスト I/O

テキスト I/Oは、open()、またはio.StringIO()を使うことで生成できます。

import io

# open() を使ったテキストストリームの生成
f = open("test.txt", "w", encoding="utf-8")

# io.StringIO() を使ったテキストストリームの生成(インメモリ)
o = io.StringIO("最初の文字列")

バイナリ I/O

バイナリ I/Oは、open()、またはio.BytesIO()を使うことで生成できます。

import io

# open() を使ったバイナリストリームの生成(モードに b を指定する)
f = open("binary.jpg", "wb")

# io.BytesIO() を使ったバイナリストリームの生成(インメモリ)
o = io.BytesIO(b"initial")

raw I/O

Raw I/Oは、open()を使ってバッファリングを無効にし、ファイルをバイナリーモードで開くことで生成できます。使う機会はほぼありません。

f = open("raw.jpg", "wb", buffering=0)

使ってみる

標準出力もテキストストリームの1つです。

import sys

print(sys.stdout)

実行結果

<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>

書き込み専用のストリームなのでwrite()で書き込むことができる。

import sys

stdout = sys.stdout

# 書き込む
stdout.write("abc")

実行結果

abc

まとめ

この記事では、ストリームについて解説しました。

ストリームを使うことでファイルや標準入出力などからデータを読み取ったり、書き込んだりすることができます。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ