1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #!/usr/bin/env python3
import argparse
from filecmp import dircmp
from os.path import getsize
changed_files = {}
deleted_files = {}
added_files = {}
def diff_file_size(file1, file2):
return getsize(file2) - getsize(file1)
def diff_report():
for k, v in deleted_files.items():
print(k, v)
for k, v in added_files.items():
print(k, v)
for k, v in changed_files.items():
print(k, v)
def compare_dir(dir):
for changed_file in dir.diff_files:
file1 = "{0}/{1}".format(dir.left, changed_file)
file2 = "{0}/{1}".format(dir.right, changed_file)
changed_files[ file2 ] = diff_file_size(file1, file2)
for deleted_file in dir.left_only:
file1 = "{0}/{1}".format(dir.right, deleted_file)
deleted_files[ file1 ] = "DELETED!"
for added_file in dir.right_only:
file1 = "{0}/{1}".format(dir.right, added_file)
added_files[ file1 ] = "ADDED!"
for sub_dir in dir.subdirs.values():
compare_dir(sub_dir)
def main():
parser = argparse.ArgumentParser(description="Usage for diff_dir.py")
parser.add_argument('--dir1', type=str, required=True)
parser.add_argument('--dir2', type=str, required=True)
args = parser.parse_args()
#dir = dircmp(args.dir1, args.dir2)
dir = dircmp(args.dir1, args.dir2)
compare_dir(dir)
diff_report()
if __name__ == '__main__':
main() |
Partager