Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
labo_blockchain
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
denis.gremaud
labo_blockchain
Commits
c92de9f3
Commit
c92de9f3
authored
4 years ago
by
Denis Gremaud
Browse files
Options
Downloads
Patches
Plain Diff
commentaires et entete
parent
7d8a0a22
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
myzip_gremaud_tefridj.py
+102
-17
102 additions, 17 deletions
myzip_gremaud_tefridj.py
test.gz
+0
-0
0 additions, 0 deletions
test.gz
test2.jpg
+0
-0
0 additions, 0 deletions
test2.jpg
with
102 additions
and
17 deletions
myzip_gremaud_tefridj.py
+
102
−
17
View file @
c92de9f3
"""
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
]
...
...
This diff is collapsed.
Click to expand it.
test.gz
deleted
100644 → 0
+
0
−
0
View file @
7d8a0a22
File deleted
This diff is collapsed.
Click to expand it.
test2.jpg
deleted
100644 → 0
+
0
−
0
View file @
7d8a0a22
730 KiB
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment