Skip to content
Snippets Groups Projects
Commit c92de9f3 authored by Denis Gremaud's avatar Denis Gremaud
Browse files

commentaires et entete

parent 7d8a0a22
No related branches found
No related tags found
No related merge requests found
"""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 gzip
import hashlib import hashlib
import sys import sys
import math import math
import os 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): def read_file(file_name):
file = open(file_name, "rb") file = open(file_name, "rb")
file_open = file.read() file_open = file.read()
return file_open 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): def write_file(file_name, data):
file = open(file_name, "wb") file = open(file_name, "wb")
file.write(data) file.write(data)
file.close() 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): def hash(file, print_hash = False):
hash_file = hashlib.sha1(file).hexdigest() hash_file = hashlib.sha1(file).hexdigest()
if print_hash == True: if print_hash == True:
print('hash : {}'.format(hash_file)) print('hash : {}'.format(hash_file))
return 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): def compression(input_file):
test_size(input_file) test_size(input_file)
file = read_file(input_file) file = read_file(input_file)
...@@ -31,6 +87,16 @@ def compression(input_file): ...@@ -31,6 +87,16 @@ def compression(input_file):
f.close() f.close()
test_size(out_file_name) 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): def decompression(input_file, out_file_name):
with gzip.open(input_file, "rb") as f: with gzip.open(input_file, "rb") as f:
data = f.read() data = f.read()
...@@ -38,8 +104,17 @@ def decompression(input_file, out_file_name): ...@@ -38,8 +104,17 @@ def decompression(input_file, out_file_name):
write_file(out_file_name, plain_string) write_file(out_file_name, plain_string)
test_checksum(out_file_name) test_checksum(out_file_name)
def test_checksum(out_file_name): """permet de tester si 2 hash sont pareil (checksum)
file = read_file(out_file_name)
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_after = hash(file, print_hash = False)
hash_before = str(input('veuillez entrer le hash du fichier avant compression : ')) hash_before = str(input('veuillez entrer le hash du fichier avant compression : '))
if hash_after == hash_before: if hash_after == hash_before:
...@@ -47,10 +122,20 @@ def test_checksum(out_file_name): ...@@ -47,10 +122,20 @@ def test_checksum(out_file_name):
else: else:
print('problème lors de la décompression') 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): def test_size(input_file):
print("La taille du fichier est de : ") print("La taille du fichier est de : ")
print("taille en ko : {}".format(os.path.getsize(input_file)/1000)) print("taille en ko : {}".format(os.path.getsize(input_file)/1000))
if __name__ == '__main__':
if len(sys.argv) > 1: # on test si on a spécifié un nom de fichier à trier if len(sys.argv) > 1: # on test si on a spécifié un nom de fichier à trier
type_program = sys.argv[1] type_program = sys.argv[1]
input_file = sys.argv[2] input_file = sys.argv[2]
......
File deleted
test2.jpg

730 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment