#!/usr/bin/python
# -*- coding: ISO-8859-15 -*-
import sys
import os
from zipfile import ZipFile?, is_zipfile
def ajoute_fichier(fichier_zip, fichier):
""" ajoute un fichier dans une archive zip """
curseur = ZipFile?(fichier_zip, mode="a")
try:
nom_archive = os.path.basename(fichier)
if nom_archive not in curseur.namelist():
curseur.write(fichier, nom_archive)
return True
else:
return False
finally:
curseur.close()
def affiche_contenu(fichier_zip):
""" affiche le contenu d'un fichier zip """
curseur = ZipFile?(fichier_zip)
try:
# récupération du nb de fichiers
nb_fichiers = len(curseur.infolist())
# affichage
print 'contenu de %s:\n' % fichier_zip
curseur.printdir()
print '%d fichier(s)' % nb_fichiers
finally:
curseur.close()
if __name__ == '__main__':
""" deux utilisations possibles:
o si seule l'archive est fournie en argument,
la liste des fichiers contenus est affichée
o si un fichier est aussi fourni, il est inséré dans l'archive
si l'archive ne possède pas déjà un fichier sous ce nom puis
affiche la liste des fichiers
"""
if len(sys.argv) < 2:
print ('utilisation: python %s nom de l\'archive [nom du fichier]?'
'texte à remplacer texte de remplacement') % sys.argv[0]?
else:
fichier_zip = sys.argv[1]?
if not is_zipfile(fichier_zip):
print '"%s" n\'est pas un fichier zip' % fichier_zip
else:
if len(sys.argv) > 2:
if not ajoute_fichier(fichier_zip, sys.argv[2]?):
print 'fichier avec le même nom déjà existant'
else:
print 'fichier ajouté'
else:
affiche_contenu(fichier_zip)