【Python】標準のfilecmpで2つのフォルダ内のファイルを比較

サーバとローカル、編集前と編集後、一括処理前と後など、
同じ名前で同じフォルダ名でどっちのファイルが最新だっけ?どっちにファイルを置いていたっけ?
というようなことは無いでしょうか。
そんな時に2つのフォルダ(ディレクトリ)を比較して、次をぱっと見つけられると助かりますよね。
・片方のフォルダにだけあるファイル
・同じ名前で同じ内容のファイル
・同じ名前だけど内容が違うファイル
Pythonプログラムで実現する方法をご紹介します。

超シンプルですので今回はいきなりサンプルコード形式です。

目次

実験構成

検証のために次のフォルダ構成にしています。

test.py

sampleA
├── text1.txt
├── text2.txt
├── text3.txt
└── text4.txt
sampleB
├── text1.txt
├── text3.txt
└── text4.txt

実行ファイル(test.py)と同じ階層にsampleAsampleBフォルダを置いています。

text2.txtが、片方にしかないファイルです。
text3.txtは、内容を変えてあります。

これらをうまく検出できれば動作OKとなります。

サンプルコード

次のサンプルコードで検証します。

import filecmp

folder1 = 'sampleA'
folder2 = 'sampleB'

dcmp = filecmp.dircmp(folder1, folder2)

print(f"folder1:{folder1}")
print(f"folder2:{folder2}")
print(f"Only in folder1:{dcmp.left_only}" )
print(f"Only in folder2:{dcmp.right_only}")
print(f"Common in both folders:{dcmp.common}")
print(f"Different files:{dcmp.diff_files}")
print(f"Same files:{dcmp.same_files}")

実行結果がこちらです。

Only in folder1:text2.txtとなっており、片方にしかないファイルを挙げることができました。
Different files:text3.txtとなり、内容が異なるファイルを無事見つけることができました。

無事、想定通りの動作をさせることができました!
これでフォルダ構成が複雑になっても、
片方だけに残ってコピーし忘れたファイルや、更新されているファイルを見つけることができます。
業務などでも使えそうですね。

今回は以上となります。
この記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次