カテゴリ: Python 更新日: 2025/12/15

Pythonでバイナリファイルを読み書きする方法を初心者向けに解説!rb / wb モードの使い方

Pythonでバイナリファイルを読み書きする方法(rb / wb モードの使い方)
Pythonでバイナリファイルを読み書きする方法(rb / wb モードの使い方)

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonで普通のテキストファイルじゃなくて、画像や音声のようなファイルを扱いたいときはどうすればいいですか?」

先生

「それにはバイナリファイルとして読み書きする必要があります。Pythonではrbwbというモードを使います。」

生徒

「rbとかwbって何ですか?ちょっと難しそうです…」

先生

「簡単に言うと、rbは『バイナリ読み込みモード』、wbは『バイナリ書き込みモード』です。文字としてではなく、データのまま読み書きします。」

生徒

「なるほど!具体的にはどうやって使うんですか?」

先生

「それでは、実際のPythonコードで見ていきましょう!」

1. バイナリファイルとは?

1. バイナリファイルとは?
1. バイナリファイルとは?

バイナリファイルとは、テキストではなく0と1で構成されたデータのことです。画像(jpg, png)、音声(mp3, wav)、動画(mp4)などがこれに該当します。テキストファイルのように文字を直接読むことはできませんが、Pythonなら簡単に読み書きできます。

2. rb / wb モードとは?

2. rb / wb モードとは?
2. rb / wb モードとは?

Pythonでファイルを開くとき、モードを指定します。代表的なものは以下です:

  • r : 読み込み(テキスト)
  • w : 書き込み(テキスト)
  • rb : 読み込み(バイナリ)
  • wb : 書き込み(バイナリ)

ポイントは、バイナリモードでは文字としてではなく、データそのものを扱うことです。例えば画像ファイルを文字列として扱おうとすると壊れてしまいます。

3. バイナリファイルを読み込む方法(rbモード)

3. バイナリファイルを読み込む方法(rbモード)
3. バイナリファイルを読み込む方法(rbモード)

まず、バイナリファイルを読み込む例を見てみましょう。ここでは画像ファイルを例にします。


with open("sample.jpg", "rb") as file:
    data = file.read()
print("データの長さ:", len(data))

ポイント:

  • with open(...)でファイルを開くと、自動で閉じてくれるので便利です。
  • "rb"モードで開くと、画像や音声のデータをそのまま読み込めます。
  • file.read()で全データを読み込みます。

データの長さ: 254312

4. バイナリファイルを書き込む方法(wbモード)

4. バイナリファイルを書き込む方法(wbモード)
4. バイナリファイルを書き込む方法(wbモード)

次に、読み込んだデータを別のファイルに書き込む例です。


with open("copy_sample.jpg", "wb") as file:
    file.write(data)
print("コピーが完了しました")

ポイント:

  • "wb"モードで開くと、バイナリデータを書き込めます。
  • 既存のファイルがある場合は上書きされます。
  • テキストファイルのwモードと同じように使えますが、データはバイナリです。

5. 少し応用:一部だけ読み書きする方法

5. 少し応用:一部だけ読み書きする方法
5. 少し応用:一部だけ読み書きする方法

ファイル全体ではなく、一部だけ読み書きしたいときもあります。その場合はread(size)を使います。


with open("sample.jpg", "rb") as file:
    part_data = file.read(1024)  # 先頭1KBだけ読み込む
print("読み込んだデータ:", len(part_data))

この方法を使えば、大きなファイルでも一度にメモリに読み込まずに処理できます。

6. 注意点とよくある質問

6. 注意点とよくある質問
6. 注意点とよくある質問

バイナリファイルを扱うときは以下に注意してください:

  • テキストモード(r/w)で画像や音声ファイルを開くと、データが壊れます。
  • ファイルを読み込んだら必ず閉じること。withを使えば自動で閉じてくれます。
  • バイナリデータはlen()でバイト数を確認できます。

よくある質問:

Q1: 「rbで読み込んだデータをprintすると文字が読めないのですが…?」

A: バイナリデータは0と1の塊なので、文字列ではありません。画像や音声は専用のソフトで確認してください。

Q2: 「wbで書き込むと元のファイルは消えますか?」

A: はい、同じ名前のファイルがある場合は上書きされます。注意してください。

7. まとめの代わりに補足

7. まとめの代わりに補足
7. まとめの代わりに補足

Pythonでバイナリファイルを扱うと、画像や音声、動画など様々なデータを自由に操作できます。rbwbの使い方を覚えれば、データ分析や画像処理などにも応用可能です。

最初は少し難しく感じるかもしれませんが、まずは小さな画像ファイルで練習すると理解が早まります。

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説