def _recursive_dircmp(folder1, folder2, prefix='.'):
"""Return a recursive dircmp comparison report as a dictionary."""
comparison = filecmp.dircmp(folder1, folder2)
data = {
'left': [r'{}/{}'.format(prefix, i) for i in comparison.left_only],
'right': [r'{}/{}'.format(prefix, i) for i in comparison.right_only],
'both': [r'{}/{}'.format(prefix, i) for i in comparison.common_files],
}
for datalist in data.values():
datalist.sort()
if comparison.common_dirs:
for folder in comparison.common_dirs:
# Update prefix to include new sub_folder
prefix += '/' + folder
# Compare common folder and add results to the report
sub_folder1 = os.path.join(folder1, folder)
sub_folder2 = os.path.join(folder2, folder)
sub_report = _recursive_dircmp(sub_folder1, sub_folder2, prefix)
# Add results from sub_report to main report
for key, value in sub_report.items():
data[key] += value
return data
评论列表
文章目录