Pythonで同じ内容のファイルを削除する方法

Pocket

Pythonを使ってフォルダ内の内容が全く同じファイルを削除する方法です。
まずすべてのファイルの中身を配列に入れます。
これを一つずつ比較しまして、既存のファイルと同じファイルは、削除用ファイルの配列に入れます。
最後に削除用ファイルの配列に入っているファイルを削除します。

import os
import glob

def main():
  target_dir = './test'
  files = glob.glob(target_dir + "/*")
  files.sort()
  contents = []
  for fn in files:
    with open(fn, "rb") as f:
      contents.append(f.read())
  files_del = []
  for i in range(1, len(files)):
    for j in range(0, i):
      if contents[i] == contents[j]:
        files_del.append(files[i])
        break
  for fn in files_del:
    print("remove:", fn)
    os.remove(fn)

if __name__ == '__main__':
  main()

処理が遅い場合は、サイズで比較、ハッシュで比較などを組み合わせるといいと思います。

[ 2021年10月22日 | カテゴリー: Python | タグ: ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報