カテゴリ: Python 更新日: 2025/10/18

Pythonでバイナリファイルを読み書きする方法を完全ガイド!初心者でもわかるrb / wbモードの使い方

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

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

生徒

「Pythonで画像とか音声みたいなデータを読み込んだり保存したりできますか?」

先生

「できますよ!そういったファイルは“バイナリファイル”と呼ばれていて、Pythonではrbwbというモードで読み書きします。」

生徒

「バイナリファイルって何ですか?テキストファイルとは違うんですか?」

先生

「はい、テキストファイルは文字だけですが、バイナリファイルは画像や音、動画など、人間には読めないデータのかたまりなんです。それじゃあ詳しく説明していきましょう!」

-

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

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

バイナリファイルとは、コンピューターが理解できる形で保存されたファイルのことです。画像ファイル(.jpg や .png)、音声ファイル(.mp3 や .wav)、PDF、Word、Excel などがそれにあたります。

こうしたファイルの中身は「0」や「1」のデジタル信号の集合体です。パソコンで「開いても文字化けする」ようなファイルがバイナリファイルだと思えばOKです。

2. rb / wb モードとは?

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

Pythonでファイルを開くときには、open()関数を使います。そのとき、どのようにファイルを操作するかを指定するのが「モード」です。

  • rb:バイナリファイルを「読み込み専用」で開く(read binary)
  • wb:バイナリファイルを「書き込み専用」で開く(write binary)

"rb""wb"「b」がポイントで、これを付けないとテキストファイルとして開いてしまいます。

3. バイナリファイルを読み込む基本

3. バイナリファイルを読み込む基本
3. バイナリファイルを読み込む基本

例えば、画像ファイルを読み込むには以下のように書きます:


with open("photo.jpg", "rb") as f:
    binary_data = f.read()

with構文はファイルを開いたあとの「自動で閉じる仕組み」です。初心者でも安心して使えます。

f.read()で全体のバイナリデータを読み込み、変数binary_dataに格納しています。

4. バイナリファイルを書き込む基本

4. バイナリファイルを書き込む基本
4. バイナリファイルを書き込む基本

次は読み込んだバイナリデータを別のファイルに保存(書き込み)する方法です。コピーのようなイメージです。


with open("photo_copy.jpg", "wb") as f:
    f.write(binary_data)

wbモードを使うと、既存のファイルは上書きされます。間違って大事なファイルに書き込まないように注意しましょう。

-

5. 画像ファイルをコピーする簡単な例

5. 画像ファイルをコピーする簡単な例
5. 画像ファイルをコピーする簡単な例

これまでの読み書きを組み合わせれば、画像ファイルをコピーすることができます。


with open("original.png", "rb") as source:
    data = source.read()

with open("copied.png", "wb") as target:
    target.write(data)

このように、バイナリファイルをrbモードで読み込み、wbモードで書き出すだけで簡単にコピーができます。

6. バイナリファイルとテキストファイルの違い

6. バイナリファイルとテキストファイルの違い
6. バイナリファイルとテキストファイルの違い

バイナリファイルは、文字コードなどを考えず「そのままのデータ」を読み書きします。一方でテキストファイル(.txtや.csvなど)は、読み込んだ後に文字列として扱うため、「文字コード(UTF-8など)」が関係してきます。

つまり、画像や音声などの人間が読めない形式にはバイナリモードを、文章など人間が読める形式にはテキストモードを使うのが基本です。

7. エラーが出たときの対処方法

7. エラーが出たときの対処方法
7. エラーが出たときの対処方法

バイナリファイルを扱っていると、次のようなエラーに出会うことがあります:

  • FileNotFoundError: ファイルの名前が間違っている、またはファイルが存在しない。
  • PermissionError: ファイルが開けない。書き込み禁止や管理者権限の問題の可能性あり。
  • ValueError: write()に文字列を渡してしまった。wbモードではバイト型(bytes)でないと書けません。

8. バイナリデータを部分的に読み書きする方法

8. バイナリデータを部分的に読み書きする方法
8. バイナリデータを部分的に読み書きする方法

大量のデータを一度に読み書きするのが難しい場合は、chunk(チャンク)という方法を使います。チャンクとは「小さなかたまり」のことです。

以下は、画像を1KBずつ読み込んでコピーする例です:


with open("original.jpg", "rb") as source, open("copy.jpg", "wb") as target:
    while True:
        chunk = source.read(1024)
        if not chunk:
            break
        target.write(chunk)

これにより、大きなファイルでもメモリを圧迫せずに安全に扱えます。

9. バイナリで扱う場面は意外と多い!

9. バイナリで扱う場面は意外と多い!
9. バイナリで扱う場面は意外と多い!

Pythonのファイル処理では、バイナリモードを使う機会が実はとても多いです。以下のような場面が代表例です:

  • 画像ファイルの読み書き
  • 音声ファイルの編集
  • PDFやWordファイルの操作
  • Excelファイルの書き出し(openpyxlなど)
  • データベースへのBLOB(バイナリ)保存

プログラミング初心者の方でも、「rb」「wb」を覚えることで、世界がグッと広がります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
PHPでメールフォームを作る方法を徹底解説!初心者向けにmail関数とPHPMailerの使い方も紹介
人気記事
No.1
PHP&Python記事人気No1
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
PHP&Python記事人気No2
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
PHP&Python記事人気No3
Pythonのリストを辞書に変換する方法(dict() / zip())
No.4
PHP&Python記事人気No4
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
-