Ce module va permettre l'upload de document de manière correcte dans l'arborescence.
- Il permettra d'uploader des archives en les décompressant au bon endroit.
- Il permettra de joindre des documents à un sujet.
De la doc sur le sujet
Le moduleZip.py
#!/usr/bin/python
# -*- coding: Utf-8 -*-
#Autor : Jonathan HILY
#Program : Module gestion des archives .zip
import zipfile
import os
class ArchiveZ:
"""
UTILISATION DU MODULEZIP:
1.Creation d'une instance de la classe : >>>arch=ArchiveZ()
2.Pour ziper un dossier :
>>>arch.zipf('archive.zip','chemin/dossier')
Le chemin demandé est un chemain relatif au dossier courant
3.Pour deziper une archive :
>>>arch.unzipf('archive.zip','chemin/unzipDir')
Le chemin demandé est un chemain relatif au dossier courant
"""
def openZip(self, mode): #Ouvre monArchive dans le mode demande
if mode == 'w':
self.zfile = zipfile.ZipFile(self.zipname,mode,zipfile.ZIP_DEFLATED)
elif mode == 'r':
self.zfile = zipfile.ZipFile(self.zfilename,mode)
else:
print "Erreur de mode d'ouverture"
def close(self): #Ferme le ficher f
self.zfile.close()
def toZip(self): #Zip les fichiers du dossier courant
temp = self.dirname
files = [f for f in os.listdir(self.dirname) if os.path.isfile(os.path.join(self.dirname, f))]
files = [f for f in files if f != self.zipname]
dirs = [f for f in os.listdir(self.dirname) if os.path.isdir(os.path.join(self.dirname, f))]
for file in files:
self.zfile.write(os.path.join(self.dirname, file))
self.dirname = temp
for file in dirs:
self.dirname = os.path.join(self.dirname, file)
self.toZip()
self.dirname = temp
def toUnZip(self):
try: os.mkdir(self.dirname)
except: print "Le dossier \'" + self.dirname + "\' existe deja"
for filename in self.zfile.namelist():
(filepath, fname) = os.path.split(filename)
try: os.makedirs(os.path.join(self.dirname, filepath), mode=0777)
except: pass
data = self.zfile.read(filename)
file = open(os.path.join(self.dirname, filename), 'w+b')
file.write(data)
file.close()
def zipf(self, zipname, dirname):
"""
Utilisation: >>>zipf('zipname','dirname')
zipname = nom_archive.zip
dirname = chemin du dossier a ziper
"""
self.zipname = zipname
self.dirname = dirname
self.openZip("w")
self.toZip()
self.close()
def unzipf(self, zfilename, dirname):
"""
Utilisation: >>>unzipf('zfilename','dirname')
zfilename = nom_archive.zip
dirname = chemin du dossier dans lequel deziper
"""
self.zfilename = zfilename
self.dirname = dirname
self.openZip("r")
self.toUnZip()
self.close()
Le moduleTgz.py
#!/usr/bin/python
# -*- coding: Utf-8 -*-
#Autor : Jonathan HILY
#Program : Module gestion des archives .tgz
import tarfile
import os
class ArchiveTgz:
"""
UTILISATION DU MODULETGZ:
1.Creation d'une instance de la classe : >>>arch=ArchiveTgz()
2.Pour compreser un dossier :
>>>arch.tgz('archive.zip','chemin/dossier')
Le chemin demandé est un chemain relatif au dossier courant
3.Pour decompresser une archive :
>>>arch.untgz('archive.zip','chemin/unCompressDir')
Le chemin demandé est un chemain relatif au dossier courant
"""
def openTgz(self, mode):
if mode == 'w:gz':
self.tgzFile = tarfile.open(self.tgzname, mode)
elif mode == 'r:gz':
self.tgzFile = tarfile.open(self.tgzname, mode)
else:
print "erreur de mode d'ouverture"
def close(self):
self.tgzFile.close()
def toTgz(self):
temp = self.dirname
files = [f for f in os.listdir(self.dirname) if os.path.isfile(os.path.join(self.dirname, f))]
files = [f for f in files if f != self.tgzname]
dirs = [f for f in os.listdir(self.dirname) if os.path.isdir(os.path.join(self.dirname, f))]
for file in files:
temp = self.dirname
self.tgzFile.add(os.path.join(self.dirname, file))
self.dirname = temp
for file in dirs:
self.dirname = os.path.join(self.dirname, file)
self.toTgz()
self.dirname = temp
def toUnTgz(self):
try: os.mkdir(self.dirname)
except: print "Le dossier \'" + self.dirname + "\' existe deja"
for filename in self.tgzFile.getnames():
(filepath, fname) = os.path.split(filename)
try: os.makedirs(os.path.join(self.dirname, filepath), mode=0755)
except: pass
for tarinfo in self.tgzFile:
self.tgzFile.extract(tarinfo,self.dirname)
def tgz(self, tgzname, dirname):
"""
Utilisation: >>>tgz('tgzname','dirname')
tgzname = nom_archive.zip
dirname = chemin du dossier a compresser
"""
self.tgzname = tgzname
self.dirname = dirname
self.openTgz("w:gz")
self.toTgz()
self.close()
def unTgz(self, tgzname, dirname):
"""
Utilisation: >>>untgz('tgzname','dirname')
tgzname = nom_archive.zip
dirname = chemin du dossier dans lequel decompresser
"""
self.tgzname = tgzname
self.dirname = dirname
self.openTgz("r:gz")
self.toUnTgz()
self.close()
Le moduleBz2.py
#!/usr/bin/python
# -*- coding: Utf-8 -*-
#Autor : Jonathan HILY
#Program : Module gestion des archives .bz2
import tarfile
import os
class ArchiveBz2:
"""
UTILISATION DU MODULETGZ:
1.Creation d'une instance de la classe : >>>arch=ArchiveBz2()
2.Pour compresser un dossier :
>>>arch.bz2('archive.bz2','chemin/dossier')
Le chemin demandé est un chemain relatif au dossier courant
3.Pour decompresser une archive :
>>>arch.untgz('archive.bz2','chemin/unCompressDir')
Le chemin demandé est un chemain relatif au dossier courant
"""
def openBz2(self, mode):
if mode == 'w:bz2':
self.bz2File = tarfile.open(self.bz2name, mode)
elif mode == 'r:bz2':
self.bz2File = tarfile.open(self.bz2name, mode)
else:
print "erreur de mode d'ouverture"
def close(self):
self.bz2File.close()
def toBz2(self):
temp = self.dirname
files = [f for f in os.listdir(self.dirname) if os.path.isfile(os.path.join(self.dirname, f))]
files = [f for f in files if f != self.bz2name]
dirs = [f for f in os.listdir(self.dirname) if os.path.isdir(os.path.join(self.dirname, f))]
for file in files:
self.bz2File.add(os.path.join(self.dirname, file))
self.dirname = temp
for file in dirs:
self.dirname = os.path.join(self.dirname, file)
self.toBz2()
self.dirname = temp
def toUnBz2(self):
try: os.mkdir(self.dirname)
except: print "Le dossier \'" + self.dirname + "\' existe deja"
for filename in self.bz2File.getnames():
(filepath, fname) = os.path.split(filename)
try: os.makedirs(os.path.join(self.dirname, filepath), mode=0755)
except: pass
for tarinfo in self.bz2File:
self.bz2File.extract(tarinfo, self.dirname)
def bz2(self, bz2name, dirname):
"""
Utilisation: >>>bz2('bz2name','dirname')
bz2name = nom_archive.bz2
dirname = chemin du dossier a compresser
"""
self.bz2name = bz2name
self.dirname = dirname
self.openBz2("w:bz2")
self.toBz2()
self.close()
def unBz2(self, bz2name, dirname):
"""
Utilisation: >>>unbz2('bz2name','dirname')
bz2name = nom_archive.bz2
dirname = chemin du dossier dans lequel decompresser
"""
self.bz2name = bz2name
self.dirname = dirname
self.openBz2("r:bz2")
self.toUnBz2()
self.close()