summaryrefslogtreecommitdiff
path: root/sem_3/SYSTEME/TP3/HUFFMAN/decompact.py
blob: 1cc3bc3f50583ca0f0a4e9bc675fd1d0b04937ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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"])