サーバとローカル、編集前と編集後、一括処理前と後など、
同じ名前で同じフォルダ名でどっちのファイルが最新だっけ?どっちにファイルを置いていたっけ?
というようなことは無いでしょうか。
そんな時に2つのフォルダ(ディレクトリ)を比較して、次をぱっと見つけられると助かりますよね。
・片方のフォルダにだけあるファイル
・同じ名前で同じ内容のファイル
・同じ名前だけど内容が違うファイル
Pythonプログラムで実現する方法をご紹介します。
超シンプルですので今回はいきなりサンプルコード形式です。
目次
実験構成
検証のために次のフォルダ構成にしています。
test.py
sampleA
├── text1.txt
├── text2.txt
├── text3.txt
└── text4.txt
sampleB
├── text1.txt
├── text3.txt
└── text4.txt
実行ファイル(test.py
)と同じ階層にsampleA
とsampleB
フォルダを置いています。
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となり、内容が異なるファイルを無事見つけることができました。
無事、想定通りの動作をさせることができました!
これでフォルダ構成が複雑になっても、
片方だけに残ってコピーし忘れたファイルや、更新されているファイルを見つけることができます。
業務などでも使えそうですね。
今回は以上となります。
この記事が少しでもお役に立てれば幸いです。
それでは、読んで頂きありがとうございました!