pythonは重複したファイルを自動的に整理することを実現します。
前言
皆さん、こんにちは、またPythonオフィスオートメーションシリーズになりました。
今日はシステムレベルの自動化事例を共有します。
「指定されたフォルダをPythonで指定されたフォルダの下にファイルの重複がないか確認します。重複があれば削除します。」
主に関連する知識点は以下の通りです。 は
ステップ分析
このプログラムで実行されるロジックは、
指定されたフォルダの下のすべてのファイルを巡回して取得し、入れ子ループを通して2つのファイルが同じかどうかを比較します。同じ場合は後者を削除します。
問題を実現する鍵は何になりますか?
二つのファイルが同じかどうかをどう判断しますか?
ここでは filecmp.cmp(f 1,f 2,show=True) は、f 1とf 2という名前のファイルを比較し、等しいと思われたら に戻る。が
このように使えますか?
Python実現
必要なライブラリをインポートし、ターゲットフォルダのパスを設定します。は、最初に空のリストを作成し、後に を追加します。は次に
具体的なコードは以下の通りです
したがって、
本論文のPython自動化脚本の制作過程を通して、Pythonのオフィスオートメーションの強さを改めて実感できます。同時に今回実現した機能は以前のファイルを自動的に整理するスクリプトと併用できます。
以上がpythonです。重複したファイルの詳細を自動的に整理することができます。pythonについて重複したファイルを整理する資料は他の関連記事に注目してください。
皆さん、こんにちは、またPythonオフィスオートメーションシリーズになりました。
今日はシステムレベルの自動化事例を共有します。
「指定されたフォルダをPythonで指定されたフォルダの下にファイルの重複がないか確認します。重複があれば削除します。」
主に関連する知識点は以下の通りです。
os
モジュール総合アプリケーションglob
モジュール総合アプリケーションfilecmp
モジュールを利用して二つのファイルを比較する。このプログラムで実行されるロジックは、
指定されたフォルダの下のすべてのファイルを巡回して取得し、入れ子ループを通して2つのファイルが同じかどうかを比較します。同じ場合は後者を削除します。
問題を実現する鍵は何になりますか?
二つのファイルが同じかどうかをどう判断しますか?
ここでは
filecmp
モジュールを使って、公式の紹介文書を見てみます。True
に戻り、そうでなければFalse
shallow
が本当であれば、同じos.stat()
で署名されたファイルは等しいと見なされる。ファイルの内容を比較します。
# x y
print(filecmp.cmp(x, y))
# True
この問題を解決したら、コードを書き始めます。Python実現
必要なライブラリをインポートし、ターゲットフォルダのパスを設定します。
import os
import glob
import filecmp
dir_path = r'C:\\xxxx'
次に、すべてのファイルの絶対パスを巡回して、glob
モジュールのワイルドカードを利用してrecursive
パラメータを結合すれば完成できます。フレームは以下の通りです。
for file in glob.glob(path + '/**/*', recursive=True):
pass
各ファイルまたはフォルダを巡回して取得すると、ファイルかどうかを判断する必要があります。ファイルであれば、絶対パスをリストに保存することができます。ここでは、もう2つのことを完了する必要があります。list.append(i)
でファイルパスos.path.isfile(i)
を利用してファイルかどうか判断し、True
に戻ると追加要素の動作を実行する。
file_lst = []
for i in glob.glob(dir_path + '/**/*', recursive=True):
if os.path.isfile(i):
file_lst.append(i)
前のステップでは、ターゲットフォルダの下のすべてのファイルパスを取得しました。次に、このパスリストを巡回して、filecmp.cmp
でファイル判断を行い、os.remove
でファイル削除を行います。
for x in file_lst:
for y in file_lst:
if x != y:
if filecmp.cmp(x, y):
os.remove(y)
ここのコードは大まかな論理を実現しましたが、ファイルが既に前の判定で削除されている可能性があります。os.remove(file)
はファイルが存在しないため、エラーが発生しました。したがって、
os.path.exists
でファイルの存在を判断することができます。
for x in file_lst:
for y in file_lst:
if x != y and os.path.exists(x) and os.path.exists(y):
if filecmp.cmp(x, y):
os.remove(y)
このようにして、簡単なファイルをリロードして手続きを完了しました。完全なコードは以下の通りです。
import os
import glob
import filecmp
dir_path = r'C:\xxxx'
file_lst = []
for i in glob.glob(dir_path + '/**/*', recursive=True):
if os.path.isfile(i):
file_lst.append(i)
for x in file_lst:
for y in file_lst:
if x != y and os.path.exists(x) and os.path.exists(y):
if filecmp.cmp(x, y):
os.remove(y)
最後に書く本論文のPython自動化脚本の制作過程を通して、Pythonのオフィスオートメーションの強さを改めて実感できます。同時に今回実現した機能は以前のファイルを自動的に整理するスクリプトと併用できます。
以上がpythonです。重複したファイルの詳細を自動的に整理することができます。pythonについて重複したファイルを整理する資料は他の関連記事に注目してください。