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.

Exercices corrigés<br />

CHAPITRE 11<br />

Enfin, le docstring du module, accessible dans les variables globales avec __doc__, a<br />

ici un double rôle : il documente le module et s’affiche lorsque le nombre d’arguments<br />

passés au script est insuffisant.<br />

Extension<br />

La méthode printdir() du module zipfile définit en dur le nom des en-têtes du<br />

tableau de fichiers affichés :<br />

Méthode printdir() de la classe ZipFile<br />

def printdir(self):<br />

"""Print a table of contents for the zip file."""<br />

print "%-46s %19s %12s" % ("File Name", "Modified ", "Size")<br />

for zinfo in self.filelist:<br />

date = "%d-%02d-%02d %02d:%02d:%02d" % zinfo.date_time<br />

print "%-46s %s %12d" % (zinfo.filename, date, zinfo.file_size)<br />

La mise en page ne fonctionne pas avec des fichiers dont le chemin complet fait plus<br />

de 46 caractères.<br />

Sans entrer dans les détails des mécanismes de l’internationalisation, on peut d’ores<br />

et déjà utiliser une version personnalisée de la classe ZipFile pour afficher les<br />

en-têtes en français et en profiter pour y intégrer la dernière ligne qui affiche le<br />

nombre de fichiers, ainsi qu’une mise en page un peu plus robuste.<br />

Version française de ZipFile<br />

FILENAME = 'Nom fichier'<br />

MODIFIED = 'Modifié'<br />

SIZE = 'Taille'<br />

FILES = 'fichier(s)'<br />

HEADER = '%-46s %19s %12s' % (FILENAME, MODIFIED, SIZE)<br />

class ExtendedZipFile(ZipFile):<br />

def printdir(self):<br />

"""Print a table of contents for the zip file."""<br />

print(HEADER)<br />

print(len(HEADER) * '-')<br />

for zinfo in self.filelist:<br />

date = '%d-%02d-%02d %02d:%02d:%02d' % zinfo.date_time<br />

filename = zinfo.filename<br />

if len(filename) > 40:<br />

filename = '...%s' % filename[-40:]<br />

print('%-46s %s %12d' % (filename, date, zinfo.file_size))<br />

print(len(HEADER) * '-')<br />

print('%d %s' % (len(self.filelist), FILES))<br />

363

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

Saved successfully!

Ooh no, something went wrong!