diff options
| author | Gaspard Coulet <gaspard.coulet@mines-ales.org> | 2021-04-28 23:05:53 +0200 |
|---|---|---|
| committer | Gaspard Coulet <gaspard.coulet@mines-ales.org> | 2021-04-28 23:05:53 +0200 |
| commit | 9fe033ea88c2f705ec18c232873d056e0c229d72 (patch) | |
| tree | 0647dc8c51610c7336c88c04de2068ea14b21e17 /sem_3/SYSTEME/TP3/HUFFMAN/decompact.py | |
Initial commit
Diffstat (limited to 'sem_3/SYSTEME/TP3/HUFFMAN/decompact.py')
| -rw-r--r-- | sem_3/SYSTEME/TP3/HUFFMAN/decompact.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/sem_3/SYSTEME/TP3/HUFFMAN/decompact.py b/sem_3/SYSTEME/TP3/HUFFMAN/decompact.py new file mode 100644 index 0000000..1cc3bc3 --- /dev/null +++ b/sem_3/SYSTEME/TP3/HUFFMAN/decompact.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3
+
+import os, sys,re
+from subprocess import call
+
+def creerdossier(path):
+ result =re.split("/",path)
+ for i in range(len(result)-1):
+ if i >= 1 :
+ result[i]= result[i-1]+"/"+result[i]
+ if not (os.path.exists(result[i])):
+ call(["mkdir",result[i]])
+
+def decompactdistant(fichier, fichierdest):
+ os.system("./dehuf "+fichier+" > .decompactencours")
+ premierdos = fichierdest
+ call(["mkdir",premierdos])
+ decompact = open(".decompactencours","r")
+ destfile=decompact
+ for line in decompact.readlines()[1:]:
+ tmp = line.encode()
+ if line[0]=="-" and line[1]=="-":
+ estuneentete=re.search("^--(.*)--$",line)
+ if estuneentete:
+ destfile.close()
+ creerdossier(premierdos+"/"+estuneentete.group(1))
+ destfile=open(premierdos+"/"+estuneentete.group(1),"w")
+ else :
+ destfile.write(line)
+
+def decompacthere(fichier):
+ os.system("./dehuf "+fichier+" > .decompactencours")
+ premierdos = re.search("(\w+)\.?\w*.comp$",fichier).group(1)
+ call(["mkdir",premierdos])
+ decompact = open(".decompactencours","r")
+ destfile=decompact
+ for line in decompact.readlines()[1:]:
+ tmp = line.encode()
+ if line[0]=="-" and line[1]=="-":
+ estuneentete=re.search("^--(.*)--$",tmp)
+ if estuneentete:
+ destfile.close()
+ creerdossier(premierdos+"/"+estuneentete.group(1))
+ destfile=open(premierdos+"/"+estuneentete.group(1),"w")
+ else :
+ destfile.write(line)
+
+if len(sys.argv)==2:
+ decompacthere(sys.argv[1])
+elif len(sys.argv)==3:
+ decompactdistant(sys.argv[1],sys.argv[2])
+else:
+ print("Parametres incorrects, syntaxe : ./decompact.py fichiercomp [destination] \n (Destination est optionnel)")
+ exit()
+call(["rm",".decompactencours"])
|
