17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

252<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

Lorsque fileobj est passé en paramètre, son ouverture et sa fermeture sont à la<br />

charge du développeur, en amont et en aval. Ce fonctionnement autorise la récupération<br />

de flux compressés sans pour autant forcer une écriture de fichier sur le système.<br />

Dans le cas ou filobj n’est pas spécifié ou à None, la classe utilise le nom de fichier<br />

fourni dans filename pour ouvrir un nouvel objet file, en utilisant le mode fourni<br />

ou par défaut, rb.<br />

compresslevel permet de spécifier le niveau de compression pour les écritures et est<br />

fixé à 9 par défaut, soit le niveau de compression le plus fort et le plus gourmand en<br />

temps CPU. Les niveaux varient de 0 (le moins compressé mais le plus rapide) à 9.<br />

open(fichier[, mode[, compresslevel]])<br />

Raccourci direct permettant d’instancier un nouvel objet de type GzipFile sur le<br />

fichier, à la manière de la primitive open().<br />

open() est utilisée dans l’exemple ci-dessous, pour simuler le fonctionnement de base<br />

des outils gzip et gunzip.<br />

Module gzipper.py<br />

#!/usr/bin/python<br />

# -*- coding: ISO-8859-15 -*-<br />

""" Ce module simule le fonctionnement<br />

de base de gzip et gunzip<br />

"""<br />

import sys<br />

import os<br />

from optparse import OptionParser<br />

from gzip import open as gzopen<br />

option_1 = {'noms': ('-c', '--compress'), 'dest': 'compress',<br />

'action': 'count', 'help': 'fichier à compresser'}<br />

option_2 = {'noms': ('-d', '--decompress'), 'dest': 'decompress',<br />

'action': 'count', 'help': 'fichier à décompresser'}<br />

options = [option_1, option_2]<br />

def _compress(filename, compresslevel=9):<br />

""" compresse un fichier en une archive gzip<br />

attention, écrase un éventuel fichier filename+".gz"<br />

et ne crée que des archives par lecture binaire<br />

"""<br />

original = open(filename, mode='rb')

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

Saved successfully!

Ooh no, something went wrong!