Python

【Python】第6章第9回:バイナリファイルの扱い方

本記事では、Pythonを使用してバイナリファイルを操作する方法を解説します。画像や音声データなど、バイナリ形式で保存されたデータを読み書きする方法を学びましょう。

0. 記事の概要

この記事を読むメリット

  • バイナリファイルの基礎を理解:バイナリ形式のデータの扱い方を学べます。
  • 効率的な操作を習得:ファイルサイズの大きなデータを効率的に処理できます。
  • 実践的な知識を取得:画像や音声データの操作に応用できます。

この記事で学べること

  • バイナリファイルの基礎知識
  • Pythonでのバイナリファイルの読み書き方法
  • エラー処理と応用例

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

1.1 定義と特徴

バイナリファイルとは、テキストではなくバイナリ形式(0と1のデータ)で保存されるファイルのことです。画像、音声、動画、実行可能ファイルなどがこれに該当します。

1.2 主な用途

  • 画像や音声データの保存
  • プログラムの実行ファイル
  • 圧縮ファイルや暗号化ファイルの操作

2. バイナリファイルを読み書きする方法

2.1 バイナリモードでファイルを開く

# バイナリファイルを読み込む
with open("example.bin", "rb") as file:  # 読み込みモード 'rb'
    data = file.read()
    print(data)

# バイナリファイルに書き込む
with open("example.bin", "wb") as file:  # 書き込みモード 'wb'
    file.write(b"Hello, Binary World!")  # バイト列として書き込む
動作解説
  1. 'rb'はバイナリファイルを読み込むモードを指定します。
  2. 'wb'はバイナリファイルに書き込むモードを指定します。
  3. b"を付けることで、文字列をバイト列として扱います。

3. 応用例:画像ファイルのコピー

3.1 バイナリモードでのファイルコピー

# 画像ファイルをコピーする
with open("source_image.jpg", "rb") as src, open("copy_image.jpg", "wb") as dst:
    dst.write(src.read())
動作解説
  1. 元の画像ファイルを'rb'モードで開きます。
  2. 新しい画像ファイルを'wb'モードで作成します。
  3. read()で元ファイルを読み込み、write()で新しいファイルに書き込みます。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. 任意のバイナリファイルを読み込んで、サイズを出力してください。
  2. バイナリファイルを別のファイルにコピーしてください。
  3. 例外処理を組み込んだバイナリファイル操作を実装してください。

5. 練習問題の解答と解説

問1〜3の解答例

# 問1: バイナリファイルのサイズを出力
with open("example.bin", "rb") as file:
    data = file.read()
    print(f"ファイルサイズ: {len(data)} バイト")

# 問2: バイナリファイルをコピー
with open("example.bin", "rb") as src, open("copy_example.bin", "wb") as dst:
    dst.write(src.read())

# 問3: 例外処理を組み込む
try:
    with open("example.bin", "rb") as file:
        data = file.read()
        print(f"ファイルサイズ: {len(data)} バイト")
except FileNotFoundError:
    print("ファイルが見つかりません。")
except Exception as e:
    print(f"予期しないエラーが発生しました: {e}")

6. まとめ

本記事では、Pythonでのバイナリファイル操作を学びました。画像や音声ファイルの操作にこの知識を活用してください。