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

広告

Python を使ってローカルに保存されているバイナリファイルを開き、ファイルからバイトデータを読み込んだり、ファイルへバイトデータを書き込む方法について解説します。

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

バイナリファイルを読み込むためにファイルを開く場合、 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 というファイル名で次の画像ファイルを置いておきます。

バイナリファイルでの読み書き(1)

その後で、次のように実行してください。

python sample4-1.py

バイナリファイルでの読み書き(2)

画像ファイルを 1 バイトずつ読み込み、新しいファイルに読み込んだデータを書き込みます。画像ファイルの最後まで繰り返し行い、そのあとでそれぞれのファイルオブジェクトを閉じます。

プログラムを実行したあとに、プログラムがある同じディレクトリに circle_c.png というファイルが作成されています。

バイナリファイルでの読み書き(3)

画像ファイルのデータを読み込んで、新しく作成したファイルにそのままコピーすることができました。

-- --

Python を使ってローカルに保存されているバイナリファイルを開き、ファイルからバイトデータを読み込んだり、ファイルへバイトデータを書き込む方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。