バイナリファイル(binary file)とは、テキストではなく、コンピュータが解釈するための形式で保存されたファイルのことです。簡単に言うと、人間が直接読める文字(アルファベットや記号)ではなく、0と1のビット列で構成されたファイルです。
バイナリファイルとテキストファイルとの違い
文字列が多いMicrosoft Office Word(.docx)系のファイルなどを見ると、テキストが多いのでテキストファイルと思いがちですが、実はMicrosoft Office Wordもバイナリファイルになります。以下にテキストファイルとバイナリファイルとの違いを表形式で示します。
| 種類 | 内容の表現方式 | 例 | 人間が読める? |
|---|---|---|---|
| テキストファイル | 文字(ASCIIやUTF-8) | .txt, .csv, .html | ○ |
| バイナリファイル | ビット例(0と1の組み合わせ) | .exe, .jpg, .mp3 | × (専用ソフトが必要) |
バイナリファイルの例
バイナリファイルの例には以下のものがあります。
| ファイルの種類 | 拡張子 |
|---|---|
| 実行ファイル | .exe, .dllなど |
| 画像ファイル | .jpg, .png, .gifなど |
| 音声ファイル | .mp3, .wavなど |
| 動画ファイル | .mp4, .aviなど |
| Microsoft Office系のファイル | .docx, .xlsxなど |
バイナリファイルを開くには?
テキストエディタで開くと文字化けすることが多いです。この記事のWord形式ファイル(拡張子:.docx)をメモ帳で開いてみると下図のようにも文字化けしました。

実際に開くには専用のソフトやプログラムで読み込んで、意味のあるデータとして扱います。また、プログラミングで扱うときは、ファイルをrb(read binary)で開くのが基本です。
この記事のwordファイル形式を読み込むと長すぎるので、以下のようなwordファイル形式(.docxファイル)をpythonで読み込んでみます。(下図の例はLibreOfficeで開いています)

# Pythonの例(バイナリファイルを読み込む)
with open("バイナリファイルとは.docx", "rb") as f:
data = f.read()
print(data)すると
b’PK\x03\x04\x14\x00\x08\x08\x08\x00Lw\xc2Z\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00_rels/.rels\xad\x92\xdbJ\x031\x10\x86\xef\xfb\x14a\xee\xbb\xd9V\x11\x91\xcd\xf6F\x84\xde\x89\xd4\x07\
~~(中略)~~
x14\x00\x08\x08\x08\x00Lw\xc2Z\xd0\xa8\xa5\xc2\x9c\x00\x00\x00\xf4\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00V\x1f\x00\x00customXml/item1.xmlPK\x01\x02\x14\x00\x14\x00\x08\x08\x08\x00Lw\xc2Z\xff\xf0\xfa\xe9\xcd\x00\x00\x00D\x01\x00\x00
と人間には読めない文字の羅列が出力されました。
.docxや.odtファイルの本文をpythonで読むにはライブラリを使うと便利です。
以下の記事で詳述しています。
▼Wordファイル(.docx)をpyhtonで読み込み・操作するには?
▼Writerファイル(.odt)をpythonで読み込み・操作するには?

コメント