diff --git a/myzip_gremaud_tefridj.py b/myzip_gremaud_tefridj.py new file mode 100644 index 0000000000000000000000000000000000000000..ca345a598b53cdc9df7dc28f3a8669454bdd7877 --- /dev/null +++ b/myzip_gremaud_tefridj.py @@ -0,0 +1,64 @@ +import gzip +import hashlib +import sys +import math +import os + +def read_file(file_name): + file = open(file_name, "rb") + file_open = file.read() + return file_open + +def write_file(file_name, data): + file = open(file_name, "wb") + file.write(data) + file.close() + +def hash(file): + return hashlib.sha1(file).hexdigest() + +def compression(input_file): + file = read_file(input_file) + hash_input_file = hash(file) + print('hash : {}'.format(hash_input_file)) + compressed_value = gzip.compress(bytes(file)) + out_file_name = os.path.splitext(input_file)[0] + '.gz' + f = gzip.open(out_file_name, 'wb') + f.write(compressed_value) + f.close() + +def decompression(input_file, out_file_name): + with gzip.open(input_file, "rb") as f: + data = f.read() + plain_string = gzip.decompress(data) + write_file(out_file_name, plain_string) + test_checksum(out_file_name) + +def test_checksum(out_file_name): + file = read_file(out_file_name) + hash_after = hash(file) + hash_before = str(input('veuillez entrer le hash du fichier avant compression : ')) + if hash_after == hash_before: + print('tout est ok') + else: + print('problème lors de la décompression') + +def test_size(input_file): + print("La taille du fichier est de : ") + print("taille en ko : {}".format(os.path.getsize(input_file)/1000)) + +if len(sys.argv) > 1: # on test si on a spécifié un nom de fichier à trier + type_program = sys.argv[1] + input_file = sys.argv[2] + if os.path.exists(input_file) == True: + if type_program == '-c': + compression(input_file) + elif type_program == '-d': + out_file_name = sys.argv[3] + decompression(input_file, out_file_name) + else: + print('Paramètre non valide') + else: + print("Le fichier spécifié n'existe pas !") # message affiché si le fichier n'existe pas +else: + print("Vous devez spécifié un nom de fichier !") # message affiché si il y a pas de fichier spécifié \ No newline at end of file diff --git a/test.pdf b/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..acae7d200358544af4f42ee43a6d39b96ccf377e Binary files /dev/null and b/test.pdf differ diff --git a/test.txt b/test.txt new file mode 100644 index 0000000000000000000000000000000000000000..b785fdf3f9c1c9fa63bc1ea3705bdfd91d34b5d7 --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +test compression \ No newline at end of file