バイナリファイルの読み込みと書き込み
Python を使ってローカルに保存されているバイナリファイルを開き、ファイルからバイトデータを読み込んだり、ファイルへバイトデータを書き込む方法について解説します。
(Last modified: )
バイナリファイルでの読み書き
バイナリファイルを読み込むためにファイルを開く場合、 open 関数のモードとして "r" に "b" を加えた "rb" を指定して次のように実行します。
f = open('myfile.dat', 'rb')
バイナリファイルに含まれるデータを読み込むには read メソッドを使用します。
read([size])
引数には読み込むバイト数を指定します。引数を省略した場合は EOF までのデータをすべて読み込み bytes オブジェクトとして返します。
バイナリファイルへ書き込むためにファイルを開く場合、 open 関数のモードとして "w" "a" "x" のいずれかに "b" を加えた "wb" "ab" "xb" のいずれかを指定して次のように実行します。
f = open('myfile.dat', 'wb')
f = open('myfile.dat', 'ab')
f = open('myfile.dat', 'xb')
書き込みの場合の "w" "a" "x" の違いについてはテキストファイルの場合と同じです。詳しくは「テキストファイルへ書き込む」を参照されてください。
バイナリファイルに対してデータを書き込むには write メソッドを使用します。
write(b)
引数に指定した bytes オブジェクトをファイルに書き込みます。
例えば次のように記述します。
f = open('myfile.dat', 'wb')
f.write(b'ABCDEFG')
f.close()
f = open('myfile.dat', 'rb')
data = f.read()
print(data)
>> b'ABCDEFG'
f.close()
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample4-1.py という名前で保存します。
fr = open('circle_o.png', 'rb') fw = open('circle_c.png', 'wb') while True: data = fr.read(1) if len(data) == 0: break fw.write(data) fw.close() fr.close()
プログラムと同じディレクトリに circle_o.png というファイル名で次の画像ファイルを置いておきます。
その後で、次のように実行してください。
python sample4-1.py
画像ファイルを 1 バイトずつ読み込み、新しいファイルに読み込んだデータを書き込みます。画像ファイルの最後まで繰り返し行い、そのあとでそれぞれのファイルオブジェクトを閉じます。
プログラムを実行したあとに、プログラムがある同じディレクトリに circle_c.png というファイルが作成されています。
画像ファイルのデータを読み込んで、新しく作成したファイルにそのままコピーすることができました。
-- --
Python を使ってローカルに保存されているバイナリファイルを開き、ファイルからバイトデータを読み込んだり、ファイルへバイトデータを書き込む方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。