Pythonその他

Pythonでバイナリファイルを比較してみた

Pythonには、様々なクラスや関数が用意されていて、その中には、2つのバイナリファイルを比較できるものも含まれている。

今回は、Pythonでバイナリファイルを比較し差分を出力してみたので、そのサンプルプログラムを共有する。

前提条件

以下の記事の、Anacondaのインストールが完了していること。

Python開発用のAnacondaをインストールしJupyter Notebookを利用してみた今回は、Pythonを勉強してみたいと思い、Python開発環境を構築してみたので、その手順を共有する。 Python開発用として...

また、実行するPythonのバージョンが以下であること。
前提条件

サンプルプログラムの作成

作成したサンプルプログラムの構成は、以下の通り。
サンプルプログラムの構成

バイナリファイルを作成するサンプルプログラムは以下の通りで、バイナリファイルにバイナリデータを書き込み、書き込んだ内容を確認している。

また、バイナリファイルの差分を確認するサンプルプログラムは以下の通りで、バイナリファイルの差分有無や、バイナリファイルの差分内容を表示している。



サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) コマンドプロンプトを起動し、サンプルプログラムのある場所まで移動する。
サンプルプログラムの実行結果_1

2) pythonコマンドで「make_binary.py」を実行し、バイナリファイルを作成する。
サンプルプログラムの実行結果_2

3) 2)を実行後、以下のように、バイナリファイルが作成されていることが確認できる。
サンプルプログラムの実行結果_3

4) pythonコマンドで「diff_binary.py」を実行し、バイナリファイルを比較した結果を表示する。
サンプルプログラムの実行結果_4

以上より、2つのバイナリファイルの差分有無はfilecmpモジュールのcmp関数で、2つのバイナリファイルの差分内容はdifflibモジュールのSequenceMatcherクラスで、それぞれ確認できる。

要点まとめ

  • Pythonで、filecmpモジュールのcmp関数を利用すると、2つのバイナリファイルの差分有無を確認できる。
  • Pythonで、difflibモジュールのSequenceMatcherクラスを利用すると、2つのバイナリファイルの差分内容を確認できる。