AZARA

ModuleARCHIVE

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.95

ModuleARCHIVE

Ce module va permettre l'upload de document de manière correcte dans l'arborescence.

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()


<< ModuleEMAIL PagePrincipale ModuleLOGS >>

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]