こんにちは、齋藤です。
今回はフォルダ全てをコピーした際に正常にコピー出来ているかを再帰的に確認するPythonコードを紹介します。
dircmpオブジェクトには、比較したディレクトリの左側のみに存在するファイル:left_only、右側のみに存在するファイル:right_onlyのリストを表示します。
import filecmp
dir1 = "/path/to/first/directory"
dir2 = "/path/to/second/directory"
def compare_dirs(dir1, dir2, ignore=None):
dirs_equal = filecmp.dircmp(dir1, dir2, ignore=ignore)
left_only = dirs_equal.left_only
right_only = dirs_equal.right_only
diff_files = dirs_equal.diff_files
funny_files = dirs_equal.funny_files
for subdir in dirs_equal.common_dirs:
subdir1 = f"{dir1}/{subdir}"
subdir2 = f"{dir2}/{subdir}"
sub_left_only, sub_right_only, sub_diff_files, sub_funny_files = compare_dirs(subdir1, subdir2, ignore)
left_only += [f"{subdir}/{f}" for f in sub_left_only]
right_only += [f"{subdir}/{f}" for f in sub_right_only]
diff_files += [f"{subdir}/{f}" for f in sub_diff_files]
funny_files += [f"{subdir}/{f}" for f in sub_funny_files]
return left_only, right_only, diff_files, funny_files
left_only, right_only, diff_files, funny_files = compare_dirs(dir1, dir2, ignore=["$RECYCLE.BIN"])
print("Left only:")
print(left_only)
print("Right only:")
print(right_only)
print("Different files:")
print(diff_files)
print("Funny files:")
print(funny_files)