バイナリファイルの読み書き | バイナリファイルの操作 | Python本格超入門

スポンサーリンク
スポンサーリンク

バイナリファイルの読み書き

Pythonでは、テキストファイルだけでなく、バイナリファイルも操作することができます。バイナリファイルとは、通常のテキストとしてではなく、バイト列としてデータを扱うファイルです。例えば、画像や音声ファイル、プログラムファイルなどがバイナリ形式で保存されます。

バイナリファイルを開く

バイナリファイルを開く際には、open()関数を使用しますが、モードには'rb'(読み込み)、'wb'(書き込み)、'ab'(追記)などのオプションを指定します。'b'は「バイナリモード」を意味します。

バイナリファイルの読み込み

バイナリファイルを読み込むには、次のようなコードを使用します。

with open('example.bin', 'rb') as file:
    binary_data = file.read()
    print(binary_data)

このコードでは、バイナリモードでファイルを開き、全てのデータを読み込んでbinary_dataに格納しています。出力はバイト型のデータ(bytes)となり、print()を使ってその内容を確認できます。

バイナリファイルへの書き込み

バイナリファイルに書き込みを行う場合は、次のようなコードを使用します。

data_to_write = b'\x00\x01\x02\x03\x04\x05'

with open('output.bin', 'wb') as file:
    file.write(data_to_write)

この例では、data_to_writeというバイト列をバイナリモードでファイルに書き込んでいます。バイト列をb''で表し、その中にバイナリデータを記述します。

バイナリモードでのファイルの操作

次の表に、バイナリモードでファイルを操作する際に指定できるモードをまとめました。

モード 説明
'rb' バイナリモードでファイルを読み込む。
'wb' バイナリモードでファイルを書き込む。既存ファイルがある場合は上書きされる。
'ab' バイナリモードでファイルに追記する。

例: バイナリデータを追記する

既存のバイナリファイルにデータを追加したい場合は、'ab'モードを使用します。

additional_data = b'\x06\x07\x08'

with open('output.bin', 'ab') as file:
    file.write(additional_data)

このコードは、output.binというバイナリファイルに新しいデータを追記しています。ファイルが存在しない場合は、新たに作成されます。

バイナリデータのサイズ指定

バイナリファイルの読み込みには、サイズ指定も可能です。指定されたバイト数だけデータを読み込むことができます。

with open('example.bin', 'rb') as file:
    chunk = file.read(10)  # 最初の10バイトを読み込む
    print(chunk)

このコードでは、ファイルの最初の10バイトだけを読み込んでいます。これにより、大きなファイルを少しずつ処理することが可能です。

まとめ

Pythonでバイナリファイルを操作するには、バイナリモードでファイルを開く必要があります。'rb'モードで読み込み、'wb'モードで書き込み、'ab'モードで追記が行えます。バイナリデータはバイト列として扱われ、テキストデータとは異なる形式で保存や処理が行われます。ファイルサイズが大きい場合は、読み込みサイズを指定してデータを効率的に処理することも重要です。