Je veux créer un fichier zip. Ajoutez un dossier au fichier zip, puis ajoutez un groupe de fichiers à ce dossier.
Je veux donc obtenir un fichier zip avec un seul dossier contenant des fichiers.
Je ne sais pas si c'est une mauvaise pratique d'avoir des dossiers dans des fichiers zip ou quelque chose comme ça mais google ne me donne rien sur le sujet.
J'ai commencé avec ça :
def addFolderToZip(myZipFile,folder):
folder = folder.encode('ascii') #convert path to ascii for ZipFile Method
for file in glob.glob(folder+"/*"):
if os.path.isfile(file):
print file
myZipFile.write(file, os.path.basename(file), zipfile.ZIP_DEFLATED)
elif os.path.isdir(file):
addFolderToZip(myZipFile,file)
def createZipFile(filename,files,folders):
curTime=strftime("__%Y_%m_%d", time.localtime())
filename=filename+curTime;
print filename
zipFilename=utils.getFileName("files", filename+".zip")
myZipFile = zipfile.ZipFile( zipFilename, "w" ) # Open the zip file for writing
for file in files:
file = file.encode('ascii') #convert path to ascii for ZipFile Method
if os.path.isfile(file):
(filepath, filename) = os.path.split(file)
myZipFile.write( file, filename, zipfile.ZIP_DEFLATED )
for folder in folders:
addFolderToZip(myZipFile,folder)
myZipFile.close()
return (1,zipFilename)
(success,filename)=createZipFile(planName,files,folders);
Tiré de : http://mail.python.org/pipermail/python-list/2006-August/396166.html
Ce qui permet de se débarrasser de tous les dossiers et de placer tous les fichiers du dossier cible (et de ses sous-dossiers) dans un seul fichier zip. Je n'ai pas réussi à ajouter un dossier entier.
Si j'introduis le chemin d'accès à un dossier dans myZipFile.write, j'obtiens
IOError : [Errno 13] Permission refusée : '.. \packed\bin '
Toute aide est la bienvenue.
Question connexe : Comment zipper le contenu d'un dossier en utilisant python (version 2.5) ?