diff --git a/myzip_gremaud_tefridj.py b/myzip_gremaud_tefridj.py index b9b8c6e63b5636373266d4f4698a105ae3360781..a8b6dc534b1c39d13c3aa14062d614c864bab0bf 100644 --- a/myzip_gremaud_tefridj.py +++ b/myzip_gremaud_tefridj.py @@ -1,25 +1,81 @@ +"""Programme permetant de compresser et décompresser un fichier + +Usage: +====== + python myzip_gremaud_tefridj.py type input_name [out_name] + + type: -c : compression ou -d : décompression + input_name: le nom du fichier a compresser ou a décompresser + out_name : si -d le nom du fichier une fois décompresser +""" + +__authors__ = ("Denis Gremaud", "Yanis Tefridj") +__contact__ = ("denis.gremaud@etu.hesge.ch", "yanis.tefridj@etu.hesge.ch") +__version__ = "1.0.0" +__copyright__ = "copyleft" +__date__ = "12.03.21" +__version__= "1.0.1" + import gzip import hashlib import sys import math import os +"""permet de lire un fichier + + Args: + file_name: le path ou nom du fichier a lire + + Returns: + les bytes du fichier lu + +""" def read_file(file_name): file = open(file_name, "rb") file_open = file.read() return file_open +"""permet d'écrire un fichier + + Args: + file_name: le path ou nom du fichier a écrire + data: les données a écrire + + Returns: + none + +""" def write_file(file_name, data): file = open(file_name, "wb") file.write(data) file.close() +"""permet d'obtenir le hash d'un fichier en sha1 + + Args: + file: le contenu du fichier a hasher + print_hash: variable initialiser a false mais si true permet d'afficher le hash + + Returns: + le hash du contenu du fichier + +""" def hash(file, print_hash = False): hash_file = hashlib.sha1(file).hexdigest() if print_hash == True: print('hash : {}'.format(hash_file)) return hash_file +"""permet de compresser un fichier + + Args: + input_file: le path ou nom du fichier a lire + + Returns: + none (mais crée un fichier input_file.gz et affche le hash du fichier avant compression) + +""" def compression(input_file): test_size(input_file) file = read_file(input_file) @@ -31,15 +87,34 @@ def compression(input_file): f.close() test_size(out_file_name) +"""permet de décompresser un fichier + + Args: + input_file: le path ou nom du fichier a lire(fichier .gz) + out_file_name: le path ou nom du fichier a écrire avec les données décompressée + + Returns: + none (mais demande a l'utilisateurs le checksum du fichier avant compression pour tester) + +""" 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) + +"""permet de tester si 2 hash sont pareil (checksum) + + Args: + input_file: le path ou nom du fichier ou le contenu doit etre hasher + + Returns: + none (mais demande a l'utilisateurs le checksum du fichier avant compression pour tester) + +""" +def test_checksum(input_file): + file = read_file(input_file) hash_after = hash(file, print_hash = False) hash_before = str(input('veuillez entrer le hash du fichier avant compression : ')) if hash_after == hash_before: @@ -47,22 +122,32 @@ def test_checksum(out_file_name): else: print('problème lors de la décompression') +"""permet d'afficher le taille d'un fichier en KO (utiliser pour tester la compression) + + Args: + input_file: le path ou nom du fichier a tester + + Returns: + none (mais print la taille du fichier demandé en KO) + +""" 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') +if __name__ == '__main__': + 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("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 + 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.gz b/test.gz deleted file mode 100644 index e0e2c2b86db599ec82ee6878619085d63185dd5b..0000000000000000000000000000000000000000 Binary files a/test.gz and /dev/null differ diff --git a/test2.jpg b/test2.jpg deleted file mode 100644 index 43681c8be5fc94eb47d1288806ebd28a4674015f..0000000000000000000000000000000000000000 Binary files a/test2.jpg and /dev/null differ