17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

362<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

def add_to_zip(zip, path):<br />

"""Ajoute un fichier dans une archive zip."""<br />

zip = ZipFile(zip, mode="a")<br />

try:<br />

if path not in zip.namelist():<br />

zip.write(path, path)<br />

return True<br />

return False<br />

finally:<br />

zip.close()<br />

def print_zip(zip):<br />

"""Affiche le contenu d'un fichier zip."""<br />

zip = ZipFile(zip)<br />

try:<br />

print 'Contenu de %s:\n' % zip.filename<br />

zip.printdir()<br />

print '%d fichier(s)' % len(zip.filelist)<br />

finally:<br />

zip.close()<br />

if __name__ == '__main__':<br />

if len(sys.argv) < 2:<br />

print(__doc__ % {'prog': sys.argv[0]})<br />

sys.exit(0)<br />

zip = sys.argv[1]<br />

if not is_zipfile(zip):<br />

print('"%s" n\'est pas un fichier zip' % zip)<br />

sys.exit(0)<br />

if len(sys.argv) > 2:<br />

if not add_to_zip(zip, sys.argv[2]):<br />

print('Fichier avec le même nom déjà existant')<br />

else:<br />

print('Fichier ajouté')<br />

else:<br />

print_zip(zip)<br />

Discussion<br />

Lorsqu’aucun fichier à ajouter n’est fourni, le programme se contente de fournir la<br />

liste des fichiers de l’archive.<br />

Le module zipfile fournit, outre la classe ZipFile, une petite fonction utilitaire<br />

is_zipfile() qui permet de tester un fichier pour savoir si c’est une archive zip.<br />

L’information est lue dans les premiers octets du fichier.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!