【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!") # バイト列として書き込む
動作解説
'rb'
はバイナリファイルを読み込むモードを指定します。'wb'
はバイナリファイルに書き込むモードを指定します。b"
を付けることで、文字列をバイト列として扱います。
3. 応用例:画像ファイルのコピー
3.1 バイナリモードでのファイルコピー
# 画像ファイルをコピーする
with open("source_image.jpg", "rb") as src, open("copy_image.jpg", "wb") as dst:
dst.write(src.read())
動作解説
- 元の画像ファイルを
'rb'
モードで開きます。 - 新しい画像ファイルを
'wb'
モードで作成します。 read()
で元ファイルを読み込み、write()
で新しいファイルに書き込みます。
4. 練習問題
以下の課題に挑戦してみましょう。
- 任意のバイナリファイルを読み込んで、サイズを出力してください。
- バイナリファイルを別のファイルにコピーしてください。
- 例外処理を組み込んだバイナリファイル操作を実装してください。
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でのバイナリファイル操作を学びました。画像や音声ファイルの操作にこの知識を活用してください。