バイナリファイルの読み書き
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'
モードで追記が行えます。バイナリデータはバイト列として扱われ、テキストデータとは異なる形式で保存や処理が行われます。ファイルサイズが大きい場合は、読み込みサイズを指定してデータを効率的に処理することも重要です。